C# 如何将类添加到protobuf网络

C# 如何将类添加到protobuf网络,c#,serialization,protobuf-net,C#,Serialization,Protobuf Net,我正在使用protobuf网络,到目前为止我很喜欢它,但有一件事困扰着我。 我想在消息中使用一个类,但它不在我的源代码中 像这样: [ProtoContract] class Test{ [ProtoMember(1)] public Otherclass Attr {get;set} } [原始合同] 类测试{ [原成员(1)] 公共Otherclass属性{get;set} } 但是ProtoBuf不知道如何序列化Otherclass,我无法访问它的代码。 所以我需要告诉

我正在使用protobuf网络,到目前为止我很喜欢它,但有一件事困扰着我。 我想在消息中使用一个类,但它不在我的源代码中

像这样:

[ProtoContract]
class Test{ 
    [ProtoMember(1)]
    public Otherclass Attr {get;set}
}
[原始合同]
类测试{
[原成员(1)]
公共Otherclass属性{get;set}
}
但是ProtoBuf不知道如何序列化Otherclass,我无法访问它的代码。
所以我需要告诉它怎么做,但怎么做?

在v1中,你不能,除非它碰巧有XmlAerizer或datacontractserializer属性。嗯,那不是真的。。。有一个切换在理论上应该可以工作,但是如果类型发生变化,它就不能很好地容忍,因为它推断了很多


这里更好的选择是查看“v2”,它可以作为alpha下载。属性化类型应该可以,但也可以告诉类型模型如何处理未属性类型;这都是通过RuntimeTypeModel实现的。

在v1中,您不能这样做,除非它碰巧具有XmlAerizer或datacontractserializer属性。嗯,那不是真的。。。有一个切换在理论上应该可以工作,但是如果类型发生变化,它就不能很好地容忍,因为它推断了很多


这里更好的选择是查看“v2”,它可以作为alpha下载。属性化类型应该可以,但也可以告诉类型模型如何处理未属性类型;这都是通过RuntimeTypeModel实现的。

thx,但名称中的ALPHA太可怕了,无法详细查看。@Killili
GlobalOptions
可能会起作用-否则,使用单独的DTO层是最好的选择,也就是说,将数据重新映射到您可以控制的对象。还有一个问题:为未知类型添加回调不是很好?因此程序员可以添加自定义处理,比如返回一个protomemberatributes列表来描述顺序和名称?@Killili这不是一个不合理的问题;但这种类型的附加元数据已经是v2引入的内容的一部分。将其添加到v1中比完成v2.thx需要更多的工作,但是名称中的ALPHA太可怕了,无法详细查看。@Killili
GlobalOptions
可能会起作用-否则,使用单独的DTO层是最好的选择,也就是说,将数据重新映射到您控制的对象只是一个问题:为未知类型添加回调不是很好吗?因此程序员可以添加自定义处理,比如返回一个protomemberatributes列表来描述顺序和名称?@Killili这不是一个不合理的问题;但这种类型的附加元数据已经是v2引入的内容的一部分。将其添加到v1中比完成v2需要更多的工作。