我使用这样的protobuf-net序列化器:
ProtoBuf.Serializer.Serialize(fileStream, data);
如何获取非静态序列化程序实例?我想用它这样的东西:
var myProtobufNetSerializer = MyProtobufNetSerializerFactory();
myProtobufNetSerializer.Serialize(fileStream, data);
答案 0 :(得分:3)
我的重要问题是为什么你想这样做? static
方法实际上只是在默认实例(即RuntimeTypeModel.Default
)上公开v1 API。所以我可以只用以下方式回答你的问题:
TypeModel serializer = RuntimeTypeModel.Default;
然而,这样做几乎没有什么好处 - 您也可以使用static
方法。但是,如果您想要做一些更有趣的,那么您可能需要一个自定义模型:
RuntimeTypeModel serializer = RuntimeTypeModel.Create();
// exercise for reader: configure it, store it somewhere, re-use it
您应该不为每个序列化创建一个新的TypeModel
,因为TypeModel
(或更具体地说:RuntimeTypeModel
)在内部缓存生成的策略。如果不必要地继续这样做,那将是低效率和耗费内存的。
您可能不想使用默认类型模型的时间: