gpt4 book ai didi

c# - 限制 protobuf-net 继承 "tree"

转载 作者:太空狗 更新时间:2023-10-29 23:41:16 26 4
gpt4 key购买 nike

继续我的探索,让 protobuf-net 屈服于我自己的意志......

我看到一些关于如何动态添加子类的问题序列化器能够对子类进行编码..,比如thisthis

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

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

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

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

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

我试过查看代码,但没有发现任何有用的东西。

最佳答案

通常,该库非常注重发现派生类 - 并将它们与基类区别对待。 当前唯一的异常(exception)是代理类,特别是 Entity Framework 和 NHibernate。对于整洁 解决方案,添加某种“忽略子类”开关似乎很实用。但是,虽然这不存在,但非常懒惰(和 hacky)的方法是使用 NHibernate 的现有处理来作弊,例如:

namespace NHibernate.Proxy {
interface INHibernateProxy {}
}
...
public class SomeDerivedType : BaseType, INHibernateProxy {}

这将根据 BaseType 自动序列化。不过,它确实有一丝作弊的味道。

关于c# - 限制 protobuf-net 继承 "tree",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com