WCF服务注意问题之-服务的继承问题
WCF中的服务实现是无法继承的,服务契约也是无法继承的,如子接口要能够成为服务契约,必须也要标上ServiceContract属性,如下面的代码:
1. 服务接口继承:
[ServiceContract]
public interface IBaseService
{
[OperationContract]
int Add(int x, int y);
}
public interface IChildService : IBaseService
{
int Odd(int x, int y);
}
IChildService接口是无法开放为服务的,必须为IChildService也标记上ServiceContract属性,以及Odd函数要标记上OperationContract属性才可将IChildService接口开放为服务。
2. 服务实现继承
public class BaseService:IBaseService
{
public int Add(int x, int y)
{
return x + y;
}
}
public class ChildService : BaseService
{
}
宿主代码:
static void Main(string[] args)
{
ServiceHost service = new ServiceHost(typeof(ChildService));
service.Open(); //会抛出异常
Console.ReadLine();
service.Close();
}
在这段代码中如果宿主ChildService 服务实例,会提示无法找到终结点的问题,即服务实现具备不可继承性,就算在子类中在次继承接口IBaseService也无济于事,因此避免对服务实例的继承,服务接口的继承时要记得标记上服务契约属性