2014-02-14 26 views
1

在protobuf-net中,应该装饰哪个基类?这个类是直接子类还是最远的基类?或两者?在Protobuf-net中装饰中间类

[ProtoContract] 
[ProtoInclude(42, typeof(Derived))] // Here? 
public abstract class BaseClass { } 

[ProtoContract] 
[ProtoInclude(42, typeof(Derived))] // Or Here? 
public abstract class Intermediary : BaseClass { } 

[ProtoContract] 
public class Derived : Intermediary { } 

回答

1

每个预期子类型的直接父项,而不是始祖。

所以:BaseClass需要声明Intermediary,并Intermediary需要申报Derived

[ProtoContract] 
[ProtoInclude(42, typeof(Intermediary))] 
public abstract class BaseClass { } 

[ProtoContract] 
[ProtoInclude(42, typeof(Derived))] 
public abstract class Intermediary : BaseClass { } 

[ProtoContract] 
public class Derived : Intermediary { }