WCFサービスデータ契約でベースタイプを非表示/フラット化する方法はありますか?
-
29-09-2019 - |
質問
次の簡単な例を考えてみましょう。
[DataContract("{0}Base")]
public class Base<T> where T : Entity<T>
{
// Common methods & properties. No WCF exposed properties
}
[DataContract]
public class Employee : Base<Employee>
{
// WCF exposed properties
}
基本クラスのベースには、WCFサービス消費者にとって関心のあるプロパティはありませんが、WCFは[DataContract]属性をベースクラスに注釈することも強制します。これは本質的にサービスクライアントに表示されます Employee : EmployeeBase
と EmployeeBase
プロパティのない空のクラスであること。
私は露出したくありません Base<T>
このようにサービスのクラス、それで私の選択肢は何ですか?
- 従業員クラスのDTO-この複雑さを追加したくない
- 従業員のデータ契約がそれが継承することを公開しないように、データコントラクトの階層を「フラット化」します
Base<T>
. 。これは可能ですか?どのように? - 他の解決策?
ありがとう。
解決
Hiearchyの各クラスは、Serializable / DataContractでなければなりません。 Hiearchyを公開したくない場合は、DTOを使用する必要があります。または、従業員クラスにIdatacontractSuroggateを実装してみてください。
所属していません StackOverflow