0

ASP.NET MVC ソリューションと、データ アクセス用の WCF サービスがあります。私の WebUI には、次のような列挙型があります。

public enum CompanyColumsEnumViewModel
{
    CompanyName,
    CompanyPostCode,
    CompanyCity
}

この列挙型を使用すると、特定の列に基づいて検索を実行できます。例: CompanyPostCode フィールドで「2000」を検索します。

ユーザーが検索式を送信すると、サービスを呼び出して、次のようないくつかのパラメーターを渡します。

var companies = _requestServiceClient.GetCompanies(term, column);

term = '2000' および column = 'CompanyPostCode' の場合

私の質問は、最高のものは何ですか:

  • 列を Web サービスの列挙型として渡しますか? (1)

  • 私のWebサービスで列を単純な文字列として渡しますか? (2)

    (1) IEnumerable< Company> GetCompanies(文字列項、CompanyColumsEnumViewModel列)

    (2) IEnumerable< Company> GetCompanies(文字列ターム、文字列列)

列挙型を使用する場合、これらの列挙型を両側で宣言する必要があります: 1 つは WebUI で、もう 1 つは Web サービスで?

ありがとう。

4

2 に答える 2

2

列挙型が ServiceContract の一部である場合 (パラメーターとして存在する場合)、次のように属性を設定する必要がありますDataContract

[DataContract]
public enum CompanyColumsEnumViewModel
{
    [EnumMember]
    CompanyName,

    [EnumMember]
    CompanyPostCode,

    [EnumMember]
    CompanyCity
}

次に、クライアント側のサービス参照でこれを見つけることができます。これは、文字列列よりも好ましいと思います。

于 2012-04-12T13:11:07.683 に答える
0

別のファイルで列挙型を通常どおりに宣言できます。カスタムオブジェクトには、定義済みのデータコントラクトとメンバーを明示的に指定できますが、列挙型がWCFサービスのパラメーターとして公開されている場合、WCFは、WSDL自体に戻ってシリアル化するのに十分スマートです。

これはすべてのタイプで同じように機能します。WCFメソッドのパラメーターとしてクラスがあり、そのクラスにプロパティとしてこの列挙型がある場合、クラスと列挙型は両方ともWSDLを介して公開され、クライアントで自動生成されます。

于 2012-04-12T13:12:19.817 に答える