2

我有一个对第 3 方 WSDL 的 .NET Web 服务参考。

在那个参考中有2个类。基本上这两个类最有可能是第 3 方 API 端的接口,但在 .NET 中最终作为 2 个代理类。

我需要将这两个类合并为一个类。为什么?因为这些被拆分很愚蠢,所以它们是允许我进行方法调用的服务。方法调用在这 2 个代理类之间全部分开。

所以我想创建一个名为 ThirdPartyService 的自定义包装类,并以某种方式从本质上继承这两个代理类的成员。我知道您可以在 C# 中继承 2 个类,但我也不知道如何使用接口来执行此操作。

4

2 回答 2

5

好吧,你没有给我们太多的工作,但你可以使用合成来做到这一点。

class Foo {
    public void Frobber();
}

class Bar {
    public void Blorb();
}

然后

class FooAndBar {
    Foo _foo;
    Bar _bar;
    public FooAndBar(Foo foo, Bar bar) {
        _foo = foo;
        _bar = bar;
    }

    public void Frobber() { _foo.Frobber(); }
    public void Blorb() { _bar.Blorb(); }
}

如果Foo分别Bar实现接口IFoo和,IBar那么你也可以FooAndBar实现IFooIBar

设计模式的语言中,我们称之为适配器模式

关于您的编辑:

我知道您可以在 C# 中继承 2 个类,但我也不知道如何使用接口来执行此操作。

不,您不能从 C# 中的两个类继承。你必须像我已经解释过的那样使用组合。

于 2010-02-04T21:00:06.033 回答
0

也许为了给 Jason 的帖子增加一些价值,这种东西也被称为适配器

于 2010-02-04T21:03:07.393 回答