2012-01-26 19 views
1

このWCFサービスクラスを使用すると、継承クラスが公開されないのはなぜですか?WCF公開クラスを継承します。

[ServiceContract] 
public interface IMyService 
{ 
    [OperationContract] void DoSomething(); 
} 

[DataContract] 
public abstract class InheritMe 
{ 
    [DataMember] public int ExposeMe { get; set; } 
} 

public class MyService : InheritMe, IMyService 
{ 
    public void DoSomething() { } 
} 

私のコードはC#、フレームワーク4、Visual Studio 2010 Proでビルドされています。

ご協力ありがとうございます。

+0

露出していないとはどういう意味ですか? –

+0

クライアントアプリケーションでは、ExposeMe DataMemberが公開されていません。 –

+0

なぜサービスクラスをデータ契約にしたいのですか? – RQDQ

答えて

2

ExposeMeはサービス契約の一部ではありません。クライアントアプリケーションで呼び出すことができると思われる場合は、契約インタフェースIMyServiceで定義する必要があります。

サービスクラス(MyService)をDataContractから継承するのはちょっと面倒です。これは目的を果たさない。 DataContactクラスは、クライアントと通信できるクラスです(たとえば、サービス操作から返すことによって)。 MyServiceクラスはサービス契約の実装に過ぎず、クライアントからは見えません。

+0

実際のコードでExposeMeプロパティを使用するInheritMeクラスのメソッドがありました。ありがとう、私はあなたの提案を試みます。 –

+0

これはうまくいきますが、残念ながらMySqlCommand.MySqlTransactionはシリアル化できないことを覚えています。ハハ。再度、感謝します。 –

関連する問題