次の簡単な例を考えてみましょう。
[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
}
基本クラス Base には、WCF サービス コンシューマーにとって重要なプロパティはありませんが、WCF では、基本クラスに [DataContract] 属性で注釈を付けることも強制されます。これは基本的に、プロパティのない空のクラスとしてサービス クライアントに表示されEmployee : EmployeeBase
ます。EmployeeBase
Base<T>
この方法でクラスをサービスに公開したくないので、どのようなオプションがありますか?
- Employee クラスの DTO - この複雑さを加えたくない
- Employee のデータ コントラクトが から継承していることを公開しないように、DataContract 階層を "フラット化" し
Base<T>
ます。これは可能ですか?どのように? - 他の解決策は?
ありがとう。