0

いくつかの (より複雑な) クラスを入力/戻りパラメーターとして使用する単純な Web メソッドを (WCF サービスの一部として) いくつか作成しました。[OperationContract] によって属性が付けられた各 Web メソッド、[DataContract] によって属性が付けられた各データ クラス、[DataMethod] によって属性が付けられたクラス内の各データ フィールド。クライアント側では、サービス参照を追加することでこれらの Web メソッドを呼び出すことができます。すべて問題ありませんが、クライアント側で上記のデータ クラスのいくつかのインスタンスを作成すると、それらのコンストラクターが実行されません。各インスタンスを初期化するのは少し複雑なので、毎回、独自のコンストラクターによってクライアント側でインスタンスを初期化する方法があると考えました。前もって感謝します!イラン。

4

1 に答える 1

1

サービスのデータ コントラクト (コンストラクターを含む) で公開されるメソッドは、サービス アプリケーション専用です。サービス参照を追加すると、データ コントラクト クラスのデータ構造のみが再作成されます。これは、サービス記述ではロジックを記述できず、ロジックをシリアル化できないためです。

サービス参照で作成されたすべてのクラスは部分的です。独自の部分クラスを作成して独自のカスタム コンストラクターを追加するか、アセンブリをサービスとクライアントの間でデータ コントラクトと共有できます (ただし、データ コントラクト クラスに追加されたすべてのロジックを共有することになりますが、これは多くの場合、望ましくないものです)。 )。アセンブリを共有すると、クライアントとサービスが緊密に結合されます。

于 2011-07-04T09:21:11.577 に答える