我目前正在使用下面的代码来反序列化数据。
using (var zipData = new GZipStream(stream, CompressionMode.Decompress, true))
{
data = Serializer.Deserialize<Dictionary<string, CustomClass>>(zipData);
}
自定义类里面有很多嵌套的自定义对象。我想预编译这个。推荐的方法是什么?
谢谢你。
我目前正在使用下面的代码来反序列化数据。
using (var zipData = new GZipStream(stream, CompressionMode.Decompress, true))
{
data = Serializer.Deserialize<Dictionary<string, CustomClass>>(zipData);
}
自定义类里面有很多嵌套的自定义对象。我想预编译这个。推荐的方法是什么?
谢谢你。
它应该可以工作,即使在预编译时也是如此 - 只要CustomClass
具有合适的[ProtoContract]
etc 属性,以便precompile.exe
工具知道该做什么。您可以通过使用单个根对象来提供更多帮助:
[ProtoContract]
public class SomeWrapper {
[ProtoMember(1)]
public Dictionary<string, CustomClass> Items {get;set;}
}
但这不是必需的,并且当它发生时,作为根对象的列表/字典/等的输出与以列表/字典/等作为第一个成员 ( )的包装器对象的输出100% 相同。[ProtoMember(1)]
要预编译,precompile.exe
请从 google-code 下载中使用:
precompile YourApp\Your.dll –o:YourSerializer.dll –t:YourSerializer
那么应用级代码就变成了:
using (var zipData = new GZipStream(stream, CompressionMode.Decompress, true))
{
var serializer = new YourSerializer();
data = (SomeWrapper)serializer.Deserialize(
zipData, null, typeof(SomeWrapper));
}