2008-10-05 72 views
7

我有一个WCF Web服务方法,其原型为:如何控制泛型WCF返回类型的名称?

[OperationContract] 
Response<List<Customer>> GetCustomers(); 

当我添加服务引用到客户端时,Visual Studio(2005)创建了一个名为“ResponseOfArrayOfCustomerrleXg3IC”类型,它是一个包装的“回复<列表<客户>>“。有什么办法可以控制包装名称吗? ResponseOfArrayOfCustomerrleXg3IC听起来不太有吸引力...

回答

17

您可以在DataContract属性定义自己的名字是这样的:

[DataContract(Name = "ResponseOf{0}")] 
public class Response<T> 

注意,在你的榜样{0}将被替换,您的代理参考类型将为ResponseOfArrayOfCustomer

此处了解详情:WCF: Serialization and Generics

0

是的。 OperationContractAttribute接受一个名为Name的参数。你可以像这样指定它:

[OperationContract(Name = "NameGoesHere")] 
Response<List<Customer>> GetCustomers(); 
+0

我不想指定操作的名称,我想指定DataContract的名称。问题是我使用的DataContract是通用的。 – ilitirit 2008-10-05 17:57:56

3

请试试这个:

[OperationContract] 
[return: MessageParameter(Name="YOURNAME")] 
Response<List<Customer>> GetCustomers(); 
+0

这也行不通 – ilitirit 2008-10-05 18:37:55