0

いくつかの引数を WCF サービスに渡す必要があるため、適切なフィールドを持つクラスを作成し、そのクラスのインスタンスをサービスに渡すことにしました。しかし、サービスはそのクラスをそれが持っているクラスとは異なるものとして認識します。

だから私はサービスでそのクラスを作成することを考えましたが、呼び出しプログラムでそれを見つけました

Class1 c = new Class1 ();//of the class in the service
FieldInfo[] f = c.GetType().GetFields();

何も返しません。

だから私はインターフェースを作ってみましたが、サービスはまだサービスからクラスを必要としています。

では、カスタム クラス インスタンスを渡し、そのクラスを他のクラスと同様に呼び出し元で使用するにはどうすればよいでしょうか?

編集:

これが私がやっていることです: VWD (-Visual Studio for web) で Web サイト (単純なテンプレートのみ) を作成しました。そして、WCFサービスとファイルを追加しました

[DataContract]
[Serializable()]
public class Class1
{
    [DataMember]
    public string s = "";
}

編集:わかりました。何らかの理由でフィールドがプロパティに変換されます。

皆さん、ありがとうございました!

4

3 に答える 3

3

データコントラクトの例を次に示します。

    [DataContract]
public class Person
{
    [DataMember]
    public int id { get; set; }

    [DataMember]
    public string Name{ get; set; }
}

次に、WCF クライアントから開始するか、メソッドの引数として渡すか、メソッド (関数) から返すことができます。

于 2012-09-04T10:45:09.380 に答える
2

ここで DataContract を探しています。OperationContract で使用するクラスは、シリアル化できるように DataContract としてマークする必要があります。

編集: Web アプリケーションでサービスへの参照を追加した場合は、Reference.cs ファイルでクラスを見つけることができるはずです。

于 2012-09-04T10:39:49.970 に答える
2

私はあなたの質問を理解したかどうか確信が持てません. wcf サービスからカスタム クラスを渡したいようです ( http://msdn.microsoft.com/en-us/library/ms733127.aspxを参照してください)。別のサービスを消費しない限り、WCFサービスに何かを渡す方法がわかりません。

編集済み:クライアントのクラスをサービスのメソッドのパラメーターとして使用することはできません。

于 2012-09-04T10:45:15.463 に答える