2008-10-05 3 views
7

У меня есть метод веб-службы WCF, чей прототип:Как я могу управлять именем общих типов возврата 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