0

クラスでオーバーロードされたコンストラクターを WCF クライアント/コンシューマーに渡すにはどうすればよいですか?

基本的に、WCF は、私の B クラスにはデフォルトのみがあり、引数/空のコンストラクターはないと考えています。クライアントがオーバーロードされたコンストラクターを呼び出せるようにするにはどうすればよいですか?

public class A
{
    public string MyField { get; set; }

}

public class B : A
{
    public List<C> MyList { get; set; }

    // when called on the WCF client side, MyList is null (so this constructor is not being called)
    public B()
    {
        MyList = new List<C>();
    }

    // not available on WCF client side
    public B(A a) : this()
    {
        base.MyField = a.MyField;
    }

    // not available on WCF client side
    public void DoSomething()
    {
        // do stuff
    }
}
4

1 に答える 1

2

コンストラクターは、wcf クライアントが認識しないクラスのみの構成要素です。境目が違います。

クライアントはプロキシ クラスについて知っているだけです。また、WCF インフラストラクチャは、既定のコンストラクターを使用してプロキシ クラスを作成します。サーバー側のコンストラクターとは無関係です。WCF の観点からは何も意味しないためです。

サービス契約、運用契約、およびデータ契約のみが重要です。

プロキシ クラスに追加の機能が必要な場合は、クライアント側で同じ名前の部分クラスをいつでも追加して、それにコードを追加できます。(オーバーロードされたコンストラクターなど)サーバーはこれをあまり気にしないことに注意してください。

于 2014-04-01T00:32:19.133 に答える