Должен ли я применять атрибуты службы к интерфейсу, к конкретному классу или к обоим? - PullRequest
4 голосов
/ 11 апреля 2011

Я внедряю службу .Net WCF и хочу применить пространство имен для будущего управления версиями.Коллега упомянул, что я должен применить несколько атрибутов к и интерфейсу, и к конкретному классу реализации для этого интерфейса, но мне не ясно 1), верно ли это, и 2) предположить, что это правильнопочему важно применять атрибуты в обоих местах.

[ServiceContract]
[ServiceBehavior(Namespace = Constants.NameSpace1_0)]
[WebService(Namespace = Constants.NameSpace1_0, Name = "MyService1_0")]
[WebServiceBindingAttribute(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1, EmitConformanceClaims = true)]
public interface IMyService
{
    [OperationContract]
    [OperationContract(Name = "MyMethod", Action = Constants.NameSpace1_0 + "/IMyService/MyMethod")]  
    string MyMethod(string phrase);
}

public class MyServiceConcrete : IMyService
{
    public string MyMethod(string phrase);
}

В этом примере я должен также применить атрибуты, которые применяются к интерфейсу, к конкретному классу (и его методам), который реализуетинтерфейс MyService?Должен ли я применять одинаковые атрибуты в обоих местах или только в одном месте, и почему?Спасибо.

1 Ответ

0 голосов
/ 11 апреля 2011

Вам нужно только применить атрибуты сервиса к интерфейсу. Интерфейс и только интерфейс используются WCF для определения API - реализация всегда реализует все элементы интерфейса, поэтому атрибуты там не нужны. Атрибуты конкретной реализации просто игнорируются.

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