diff options
author | csharptest <roger@csharptest.net> | 2011-06-11 10:41:57 -0500 |
---|---|---|
committer | rogerk <devnull@localhost> | 2011-06-11 10:41:57 -0500 |
commit | f292523df9d3a754e496f90bc26c0995a1d332a4 (patch) | |
tree | fba719d05650571b8f7f62bbe6bbcb8ff0032244 /src/ProtocolBuffers/GeneratedMessage.cs | |
parent | 7fc785c1d463c4424cf3e3c8d7fbe796e0197b70 (diff) | |
download | protobuf-f292523df9d3a754e496f90bc26c0995a1d332a4.tar.gz protobuf-f292523df9d3a754e496f90bc26c0995a1d332a4.tar.bz2 protobuf-f292523df9d3a754e496f90bc26c0995a1d332a4.zip |
Added convenience methods for to/from xml and json
Diffstat (limited to 'src/ProtocolBuffers/GeneratedMessage.cs')
-rw-r--r-- | src/ProtocolBuffers/GeneratedMessage.cs | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/ProtocolBuffers/GeneratedMessage.cs b/src/ProtocolBuffers/GeneratedMessage.cs index 0ec02e88..d030a17f 100644 --- a/src/ProtocolBuffers/GeneratedMessage.cs +++ b/src/ProtocolBuffers/GeneratedMessage.cs @@ -50,7 +50,7 @@ namespace Google.ProtocolBuffers /// </summary>
public abstract class GeneratedMessage<TMessage, TBuilder> : AbstractMessage<TMessage, TBuilder>
where TMessage : GeneratedMessage<TMessage, TBuilder>
- where TBuilder : GeneratedBuilder<TMessage, TBuilder>
+ where TBuilder : GeneratedBuilder<TMessage, TBuilder>, new()
{
private UnknownFieldSet unknownFields = UnknownFieldSet.DefaultInstance;
@@ -175,5 +175,35 @@ namespace Google.ProtocolBuffers {
unknownFields = fieldSet;
}
+
+ public static TMessage ParseFromJson(string jsonText)
+ {
+ return Serialization.JsonFormatReader.CreateInstance(jsonText)
+ .Merge(new TBuilder())
+ .Build();
+ }
+
+ public static TMessage ParseFromJson(System.IO.TextReader reader)
+ { return ParseFromJson(reader, ExtensionRegistry.Empty); }
+
+ public static TMessage ParseFromJson(System.IO.TextReader reader, ExtensionRegistry extensionRegistry)
+ {
+ return Serialization.JsonFormatReader.CreateInstance(reader)
+ .Merge(new TBuilder(), extensionRegistry)
+ .Build();
+ }
+
+ public static TMessage ParseFromXml(System.Xml.XmlReader reader)
+ { return ParseFromXml(Serialization.XmlFormatReader.DefaultRootElementName, reader, ExtensionRegistry.Empty); }
+
+ public static TMessage ParseFromXml(string rootElementName, System.Xml.XmlReader reader)
+ { return ParseFromXml(rootElementName, reader, ExtensionRegistry.Empty); }
+
+ public static TMessage ParseFromXml(string rootElementName, System.Xml.XmlReader reader, ExtensionRegistry extensionRegistry)
+ {
+ return Serialization.XmlFormatReader.CreateInstance(reader)
+ .Merge(rootElementName, new TBuilder(), extensionRegistry)
+ .Build();
+ }
}
}
\ No newline at end of file |