这是一个场景:
[ProtoContract]
class A{}
过了一会儿,另一个开发人员补充道:
class B : A {
int m;
}
如果一个类没有 ProtoContractAttribute 或在 Google Protocol Buffers 序列化期间出现错误,我将回退到 XML。上面代码的问题是 B 来自 A 的固有 ProtoContractAttribute(注意下面的 Inherited = true),但成员 'm' 不会被序列化,因为它没有 ProtoMemberAttribute。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum
| AttributeTargets.Interface, AllowMultiple = false, Inherited = true)]
public sealed class ProtoContractAttribute : Attribute
{...}
能够添加:
[AttributeUsage(AttributeTargets.Class, Inherited = true)]
public class ProtoContractWithoutInheritance : ProtoBuf.ProtoContractAttribute
{
}
但是 ProtoContractAttribute 是密封的,即使它没有被密封,ProtoBuf-Net 也在寻找显式类型:
if (item.AttributeType.FullName == "ProtoBuf.ProtoContractAttribute")
{...}
任何解决方案/解决方法?
谢谢!