WCFサービスデータ契約でベースタイプを非表示/フラット化する方法はありますか?

StackOverflow https://stackoverflow.com/questions/3499788

  •  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 : EmployeeBaseEmployeeBase プロパティのない空のクラスであること。

私は露出したくありません Base<T> このようにサービスのクラス、それで私の選択肢は何ですか?

  1. 従業員クラスのDTO-この複雑さを追加したくない
  2. 従業員のデータ契約がそれが継承することを公開しないように、データコントラクトの階層を「フラット化」します Base<T>. 。これは可能ですか?どのように?
  3. 他の解決策?

ありがとう。

役に立ちましたか?

解決

Hiearchyの各クラスは、Serializable / DataContractでなければなりません。 Hiearchyを公開したくない場合は、DTOを使用する必要があります。または、従業員クラスにIdatacontractSuroggateを実装してみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top