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<Companies> GetCompanies(string term, CompanyColumsEnumViewModel 列)

    (2) IEnumerable<Companies> GetCompanies(string term, string column)

如果我使用枚举,我必须在两边声明这些枚举:一个在我的 WebUI 中,一个在我的 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 回答