C#中的接口委派

The*_*oon 6 c# delphi interface

在Delphi中,我们可以将接口的实现委托给另一个类,我想知道这在C#中是否可行?

例如,我有接口IMyInterface,我说TMyClass实现了IMyInterface.但事实上并非如此.在内部,我可以使用implements关键字将接口实现委托给另一个类,而无需在TMyClass中声明每个方法.

Rud*_*uis 5

有一个简单的答案:不,C#不允许它以与Delphi相同的方式允许它.

对于那些了解C#而不是Delphi的人来说,这就是:http : //docwiki.embarcadero.com/RADStudio/en/Implementing_Interfaces,请参阅"按委派实现接口(仅限Win32)"部分.

我想你必须手动将方法调用传递给接口.我的C#是生锈的(我仍然可以很好地阅读它):

public class Blah : ISomeInterface
{
    public ISomeInterface implementer { getter and setter here }

    public int ISomeInterface.DoThis() 
    { 
        if (implementer) return implementer.DoThis(); 
    }
    public void ISomeInterface.DoThat(int param) 
    { 
        if (implementer) implementer.DoThat(param); 
    }

etc...
Run Code Online (Sandbox Code Playgroud)

DoThisDoThat被的方法ISomeInterface必须由实现Blah.在C#中,您必须将每个方法显式委托给包含的接口.在Delphi中,当您implements在a classinterfacetype 属性之后使用关键字时,会自动完成此操作(即,在幕后生成并调用方法,对用户不可见).

我假设一些回答者对术语的使用感到困惑,implements并且 delegation在C#中有不同的含义.