私たちのアプリケーションでは、異なるパッケージのWCFでprotobufに渡されるモデルを用意しています。プロジェクト。チャイルドプロジェクトでは、すべてのクラスが特定のビジネスエリアに特化していることがわかります。子クラスが同じアセンブリ内にないときにprotobufの継承をリストする方法
すべてのDLLは、顧客が取り込んだ機能によっては出荷されません。
私はpossiblesを指定する一つの方法は、クラスをチャイルズことを知っているのようなものです:
[ProtoContract]
[ProtoInclude(100, typeof(Derived))]
[ProtoInclude(101, typeof(Derive2))]
public class Base {
[ProtoMember(Order=1)]
int Old;
}
しかし、私の場合、私はDerived
とDerived2
クラス(それは循環参照を引き起こすが含まれているプロジェクトを参照することはできませんし、さらに重要なのは、親がすべての子供を知っていなければならないということは奇妙なことです)。
デフォルトのDataContractSerializer
では、使用しているクラスの種類を見つける方法を指定することができましたが、これを実現する方法はありますか?あるいは私は自分の制約でprotobufを使うことができませんか?
さて、私はオブジェクト指向のアプローチが反対であり、実行時にKnownTypeではなくDataContractResolverを使用できると私は考えています。整数について、1つの副題:SubTypesとProtoMembersに固有のaccrosであるべきですか?また、親クラスとその子との間には、それらの番号が一意であるか、またはその子のIDが親の子のIDからオフセットされるようにするためのメカニズムがありますか? – J4N
@ J4Nいいえ、彼ら(members + includes)は個々の親の中で一意である必要があります –