关于WCF中的继承
本文关键字:继承 WCF 关于 | 更新日期: 2023-09-27 18:22:07
我有一个WCF构造函数,如下所示:
[ServiceContract]
public interface IService
{
[OperationContract]
methodA.....
[OperationContract]
methodB....
[OperationContract]
methodC....
}
我还有一个类继承了上面的接口,比如这个
public class A: IService
{
methodA(){}
methodB(){}
methodC(){}
}
有一个iphone应用程序,它调用类a与服务器通信,并且将有另一个新的iphone应用程序,它将调用类B与服务器通信。
所以现在我必须创建类B,它与类A几乎相同。但在类B中,方法B中只会有一些修改,不需要有方法C、
我被要求重用类A,并考虑使用固有而不是编写重复的代码。
我不知道如何利用天赋来做这项工作。有人能帮我吗?非常感谢。
您的确切要求尚不清楚。你没有解释你能改变什么,不能改变什么。如果您想要更具体的答案,则需要添加其他约束。我将展示首选方法。
使用这种继承结构:
public class ServiceBase
{
public Foo MethodA()
{
// Shared implementation
}
public abstract Foo MethodB();
}
public class ServiceA : ServiceBase
{
public override Foo MethodB()
{
// ServiceA-specific implementation
}
public Foo MethodC()
{
// Only in ServiceA
}
}
public class ServiceB : ServiceBase
{
public override Foo MethodB()
{
// ServiceA-specific implementation
}
}
这样,两个服务都继承了MethodA()
的实现,而任何一个服务都有自己的MethodB()
的实现。仅需要CCD_ 3,因此仅存在于CCD_。
如果您使用两个独立的服务类,则必须有两个单独的WCF服务。使用第二个接口,而不是第二个类。然后,您可以在一个服务上拥有2个端点,服务于两个不同的应用程序:
[ServiceContract]
public interface IService
{
[OperationContract]
methodA.....
[OperationContract]
methodB....
[OperationContract]
methodC....
}
[ServiceContract] // this is for the second app
public interface IService2
{
[OperationContract]
methodA.....
[OperationContract]
methodB2.... // a different method
}
public class A: IService, IService2
{
methodA(){} // used by app 1 and app 2
methodB(){} // used by app 1
methodB2(){} // used by app 2
methodC(){} // used by app 1
}