限制protobuf-net继承"树"

dam*_*boy 5 .net c# inheritance protocol-buffers protobuf-net

继续我的追求,以自己的意愿弯曲protobuf网络..

关于如何为序列化器动态添加子类以便能够对子类进行编码,我已经看到了一些关于SO的问题..就像这样或者这个

我的情况有点不同,我有一个基类可能会在后期有限的代码中被分类,我想序列化作为BASE类,并完全忽略子类的字段/属性.

我需要这个的原因是,稍后,当我反序列化数据时,子类的代码将不可用,因此构建子类将是不可能的.

有没有办法限制/禁止子类序列化?

在我的例子中,我有一个List,其中列表中的一些项目是DerivedClass.

我想找到一种方法让protobuf-net将所有内容序列化为BaseClass并反序列化为BaseClass ...

我已经尝试过窥探代码,但没有找到太有用的东西.

Mar*_*ell 2

通常,该库非常注重发现派生类 - 并将它们与基类区别对待。当前唯一的例外是代理类,特别是实体框架和 NHibernate。对于一个整洁的解决方案,添加某种“忽略子类”开关似乎很实用。但是,虽然这种情况不存在,但一种非常懒惰(且黑客)的方法是使用 NHibernate 的现有处理进行欺骗,例如:

namespace NHibernate.Proxy {
    interface INHibernateProxy {}
}
...
public class SomeDerivedType : BaseType, INHibernateProxy {}
Run Code Online (Sandbox Code Playgroud)

然后,这将自动按照 进行序列化BaseType。不过,它确实有一丝欺骗的味道。

  • @MarcGravell 这个有没有被修补过?我需要这个功能。 (2认同)