может ли быть 2 веб-метода с тем же именем внутри веб-службы в C # - PullRequest
4 голосов
/ 10 ноября 2009

мне задали вопрос в интервью

может быть 2 веб-метода с одинаковым именем внутри веб-службы в c #.

С перегрузкой функций это возможно, но интервьюер хотел получить ответ без перегрузки функций.

Мой ответ был "Нет". Это правильно. Пожалуйста, прокомментируйте.

Ответы [ 4 ]

3 голосов
/ 10 ноября 2009

Это можно сделать так, как вы можете прочитать здесь: http://www.codeproject.com/KB/webservices/OverloadingInWebService.aspx

Причина, по которой вам нужно делать эти "особые" вещи, заключается в том, что WSDL не поддерживает те же имена методов ...

Изменить: Я вижу, что ссылка забыла о привязке WebServiceBinding:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class TestService : System.Web.Services.WebService  {

}
3 голосов
/ 10 ноября 2009

На самом деле, это возможно с небольшим количеством работы. Ключ изменяет название сообщения:

(взято по ссылке ниже)

[WebMethod(MessageName="Add_TwoNumbers")]

http://scottwhite.blogspot.com/2005/09/overloading-web-service-methods-in-net.html

2 голосов
/ 10 ноября 2009

Нет, у вас не может быть двух методов с одинаковым именем и одинаковой подписью. Это не имеет особого смысла.

1 голос
/ 10 ноября 2009

Полагаю, вы можете, если вы выставите их как разные внешние имена (если это возможно).

...