我正在实现.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接口的具体类(及其方法)?我应该在两个地方或只是其中一个地方应用相同的属性,为什么?感谢。
答案 0 :(得分:0)
您只需将服务属性应用于界面即可。 WCF使用接口(仅接口)来定义API - 实现始终实现所有接口成员,因此不需要属性。具体实现的属性将被忽略。