【发布时间】:2013-01-03 12:13:20
【问题描述】:
我正在使用 Protobuf-net(带有 Servicestack)。我有一种情况,即使特定实例是继承者,我也希望将某个类序列化为那个确切的类。 Protobuf-net 可以做到这一点吗?我不关心继承者,也不希望将它们发送给我的客户,因为他们没有合适的东西来反序列化它们。
【问题讨论】:
标签: c# serialization protobuf-net
我正在使用 Protobuf-net(带有 Servicestack)。我有一种情况,即使特定实例是继承者,我也希望将某个类序列化为那个确切的类。 Protobuf-net 可以做到这一点吗?我不关心继承者,也不希望将它们发送给我的客户,因为他们没有合适的东西来反序列化它们。
【问题讨论】:
标签: c# serialization protobuf-net
目前,答案是“不”。烦人的是,它有大部分代码来支持它,因为它适用于实体框架、NHibernate 等的代理类型(它们被实现为应被视为基本类型的子类型),但我还没有将此作为可选的“忽略子类型”功能公开。从理论上讲,这应该是一种接线的情况。如果您的继承模型只是一个额外的级别(即合约类型是Foo,并且您给它一个SuperFoo,其中SuperFoo : Foo),那么就有可能欺骗它通过伪装成 NHibernate(它检查接口/命名空间 names - 它实际上并没有引用 NHibernate 本身,以减少依赖关系):
namespace NHibernate.Proxy.DynamicProxy
{
interface IProxy { }
}
...
class SuperFoo : Foo, IProxy {...}
但是!我应该补充:
【讨论】: