我正在使用 Protobuf-net(带有 Servicestack)。我有一种情况,即使特定实例是继承者,我也希望将某个类序列化为那个确切的类。Protobuf-net 可以做到这一点吗?我不关心继承者,也不希望将它们发送给我的客户,因为他们没有合适的东西来反序列化它们。
问问题
330 次
1 回答
1
目前,答案是“不”。烦人的是,它有大部分代码来支持它,因为它适用于实体框架、NHibernate 等的代理类型(它们被实现为应被视为基本类型的子类型),但我还没有将此作为可选的“忽略子类型”功能公开。从理论上讲,这应该是一种接线的情况。如果您的继承模型只是一个额外的级别(即合同类型是Foo
,并且您给它一个SuperFoo
, where SuperFoo : Foo
),那么就有可能通过伪装成 NHibernate 来欺骗它(它检查接口/命名空间名称- 它不会'实际上并没有引用 NHibernate 本身,以减少依赖关系):
namespace NHibernate.Proxy.DynamicProxy
{
interface IProxy { }
}
...
class SuperFoo : Foo, IProxy {...}
然而!我应该补充:
- 考虑到这一点,我想更直接/正式地支持
- 上述方法会稍微减慢速度,因为它通过反射检查这一点:为了正确地做到这一点,我想让这个“直接”(常规类型检查 ets;运行时没有反射)
于 2013-01-21T08:12:22.093 回答