加入2个课程 - 基本上

时间:2010-02-04 20:56:19

标签: c# design-patterns oop wrapper adapter

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

在该引用中有2个类。基本上这两个类很可能是第三方API方面的接口,但在.NET中最终为2个代理类。

我需要将这两个类组合成一个类。为什么?因为这些是分裂的愚蠢,它们是允许我进行方法调用的服务。方法调用在这两个代理类之间分为一半和一半。

所以我想创建一个名为ThirdPartyService的自定义包装类,并以某种方式基本上继承这些代理类的成员。我知道你可以在C#中继承2个类,但是我不知道如何用接口做这个。

2 个答案:

答案 0 :(得分: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(); }
}

如果FooBar分别实施接口IFooIBar,那么您可以FooAndBar实施IFooIBar

使用Design Patterns语言,我们称之为adapter pattern

关于你的编辑:

  
    

我知道你可以在C#中继承2个类,但我也看不到如何用接口做这个。

  

没有。你不能从C#中的两个类继承。你必须使用我已经解释过的构图。

答案 1 :(得分:0)

也许将某些值添加到Jason的帖子中,这种东西也称为adapter