关于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,并考虑使用固有而不是编写重复的代码。

我不知道如何利用天赋来做这项工作。有人能帮我吗?非常感谢。

关于WCF中的继承

您的确切要求尚不清楚。你没有解释你能改变什么,不能改变什么。如果您想要更具体的答案,则需要添加其他约束。我将展示首选方法。

使用这种继承结构:

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
}