继续我的追求,以自己的意愿弯曲protobuf-net ..
关于如何动态添加子类,我已经看到了一些关于SO的问题 使序列化程序能够编码子类..,如this或this
我的情况有点不同,我有一个基类可能会在后期绑定的代码中被细分,我想序列化作为BASE类,并完全忽略子类的字段/属性。
我需要这个的原因是,稍后,当我反序列化数据时,子类的代码将不可用,因此甚至不可能构建子类。
有没有办法限制/禁止子类序列化?
在我的情况下,我有一个List,其中列表中的一些项目是DerivedClass。
我想找到一种方法让protobuf-net将所有内容序列化为BaseClass并反序列化为BaseClass ......
我已经尝试过窥探代码,但没有找到太有用的东西。
答案 0 :(得分:2)
通常,库非常特别关注发现派生类 - 并且它们与基类的处理方式不同。唯一的当前异常是代理类,特别是Entity Framework和NHibernate。对于整洁的解决方案,添加某种“忽略子类”开关似乎很实用。但是虽然不存在,但非常懒惰的(和hacky)方法将使用NHibernate的现有处理作弊,例如:
namespace NHibernate.Proxy {
interface INHibernateProxy {}
}
...
public class SomeDerivedType : BaseType, INHibernateProxy {}
然后会根据BaseType
自动序列化。不过,它确实有一种微弱的作弊行为。