Protobuf-net(Servicestack付き)を使用しています。特定のインスタンスが継承者であっても、特定のクラスをその正確なクラスとしてシリアル化したいという状況があります。Protobuf-netはこれを行うことができますか?継承者については気にしません。また、継承を逆シリアル化するための適切なものを持たないクライアントに継承を送信することも望んでいません。
1 に答える
1
現時点では、その答えは「いいえ」です。厄介なことに、Entity Framework、NHibernateなどのプロキシタイプ(ベースタイプとして扱われるべきサブタイプとして実装されている)で動作するため、それをサポートするコードのほとんどがありますが、私はまだ持っていませんこれをオプションの「サブタイプを無視する」機能として公開しました。理論的には、それは物事を配線する場合であるはずです。継承モデルが単一の追加レベルのみである場合(つまり、コントラクトタイプがFoo
であり、に、を与えているSuperFoo
場合SuperFoo : Foo
)、NHibernateのふりをしてモデルをスプーフィングすることができます(インターフェイス/名前空間の名前をチェックします-しません依存関係を減らすために、実際にはNHibernate自体を参照していません):
namespace NHibernate.Proxy.DynamicProxy
{
interface IProxy { }
}
...
class SuperFoo : Foo, IProxy {...}
でも!追加する必要があります:
- これは、考慮に入れて、私がより直接的に/公式にサポートしたいものです
- 上記のアプローチでは、リフレクションを介してこれをチェックするため、処理が少し遅くなります。適切に行うには、これを「直接」にします(通常のタイプチェックセット。実行時にリフレクションはありません)。
于 2013-01-21T08:12:22.093 に答える