C# 关于WCF中的继承
我有这样一个WCF构造函数:C# 关于WCF中的继承,c#,wcf,inheritance,C#,Wcf,Inheritance,我有这样一个WCF构造函数: [ServiceContract] public interface IService { [OperationContract] methodA..... [OperationContract] methodB.... [OperationContract] methodC.... } 我还有一个类继承了上面的接口,如下所示 public class A: IService { meth
[ServiceContract]
public interface IService
{
[OperationContract]
methodA.....
[OperationContract]
methodB....
[OperationContract]
methodC....
}
我还有一个类继承了上面的接口,如下所示
public class A: IService
{
methodA(){}
methodB(){}
methodC(){}
}
有一个iphone应用程序调用class a与服务器进行通信
将有另一个新的iphone应用程序,它将调用B类与服务器通信
现在我必须创建类B,它几乎与类A相同。
但是在B类中,methodB中只有一些修改,不需要methodC
我被要求重用类A,并考虑使用inherance而不是编写重复的代码
我不知道如何利用这种天赋来做这项工作。有人能帮我吗?谢谢大家! 您的确切要求不清楚。你没有解释你能改变什么,不能改变什么。如果您想要更具体的答案,您需要添加额外的约束。我将展示首选的方法 使用此继承结构:
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实现。MethodC只是必需的,因此只存在于ServiceA中。如果使用两个单独的服务类,则必须有两个单独的WCF服务。使用第二个接口,而不是第二个类。然后,您可以在一个服务上有两个端点,服务于两个不同的应用程序:
[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
}
在类A中标记MethodB virtual并在类B中重写它。。您不能删除方法,但如果该方法用于MethodC,则可以引发异常