Как скрыть веб-метод от производного класса - PullRequest
0 голосов
/ 27 ноября 2009

У меня есть веб-сервис .NET и его производные версии.

Мой вопрос заключается в том, что в производных версиях у меня есть метод, который я хочу скрыть (от WSDL и первой страницы). Я попытался переопределить, пометив его как устаревший, установив его как частный и переопределив, но тем не менее атрибут webservice все еще «имеет свой путь».

Есть ли способ удалить атрибут метода в производном методе. Или любой способ скрыть метод в WSDL?

// Robin

Ответы [ 3 ]

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

У вас возникают проблемы с достижением этого, потому что система наследования .NET (и любой другой объектно-ориентированной среды) не предназначена для этого: взгляните на принцип подстановки Лискова .

Может быть, вам следует пройти альтернативный курс, чтобы достичь того, чего вы хотите. Например, вместо использования наследования создайте совершенно новый сервис и создайте его методы для простого вызова эквивалентных методов в исходном классе обслуживания; таким образом, вы можете включить только те методы, которые вам нужны, в новый сервис.

0 голосов
/ 05 августа 2010

Этот метод работает с .Net 4.0:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service1 : System.Web.Services.WebService
{
    [WebMethod]
    public virtual string HelloWorld()
    {
        return "Hello World";
    }
}

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service2 : Service1
{
    public override string HelloWorld()
    {
        throw new NotImplementedException();
    }
}

Service2 наследуется от Service1 и переопределяет HelloWorld WebMethod без указания атрибута WebMethodAttribute

0 голосов
/ 27 ноября 2009

Я не думаю, что есть опция, которую вы можете включить, чтобы получить такое поведение. Если вам действительно нужно скрыть это, и вы не можете просто удалить его, я бы создал новый веб-сервис, который предоставляет только тот метод, который вы хотите раскрыть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...