我意识到这里有类似的问题,但没有一个问题像我需要的那样直截了当,可能是因为我缺乏 protobuf 经验。我正在为 enyim 的缓存客户端进行代码转换,并且无法弄清楚如何创建一个既派生又实现接口反序列化的类。
对于这样的样本
public class BaseClass
{
}
public interface ISomeRules
{
}
public class DerivedClass : BaseClass, ISomeRules
{
}
public class ThirdClass
{
ISomeRules ruleUser;
}
我想做这样的事情,因为我通常在任何地方都使用属性
[ProtoContract
,ProtoInclude(101,typeof(DerivedClass))
]
public class BaseClass
{
}
[ProtoContract
,ProtoInclude(102,typeof(DerivedClass))
]
public interface ISomeRules
{
}
[ProtoContract]
public class DerivedClass : BaseClass, ISomeRules
{
}
[ProtoContract]
public class ThirdClass
{
[ProtoMember(1)]
ISomeRules ruleUser;
}
但它无法静默缓存。如果像某些人建议的那样,我ProtoContract
从 中删除该属性ISomeRules
,则反序列化将失败。
使用 protobuf-net 是否可行?这样做的正确方法是什么?我应该使用 TypeModel (我不掌握,但哪些简单的测试表明有同样的问题)来代替?还是 TypeModel 和属性的组合?