我有一个接口
public interface IMyInterf
{
    void proc();
}
一个实现这个接口的类
public class MyClass:IMyInterf
{
    public void proc()
    {
      //
    }
}现在我设计了一个组件,想封装MyClass,但是不想使用组合方式把MyClass变为这个组件的成员,我想这么声明这个组件:
让这个组件继承自IMyInterf,但是因为我已经有了一个实现接口的类MyClass,我打算让这个组件继承接口IMyInterf之后,告诉这个组件,所有在IMyInterf规定的方法已经委托给MyClass实现了,去调用MyClass的对应方法即可。
  说白了,组件其实是MyClass的一个Facade,以前在Delphi中可以使用implements关键字完成,在C#中(包括C#4.0)如何实现,谢谢

解决方案 »

  1.   

    你说的是不是托管啊
    delegate void DataDelegate(object sender, StringEventArgs e);
    这样就可以交给具体的事件啊,什么的去解决了。
      

  2.   

    假设你的组件为 Component 类下面是伪码:Component :IMyInterf
    {
        IMyInterf itfObj;    //构造函数
        //在创建Component对象的时候,参数传递一个MyClass 的对象进来。
        Component(IMyInterf  _itf)
       {
           this.itfObj = _itf;
       }
       
       //调用
       public  void  SomeMethod()
       {
           //这里就可以使用itfObj了
       }
    }
    -----
    很奇怪,既然你自己知道是一个类似的Facade模式,你自己怎么会不知道如何实现?
      

  3.   

    哦,可能我表述的不太明确,第一我不是只的委托(delegate),第二如zsuswy所说的那种是把实现了IMyInterf的iftobj当成Component的成员来用,我不想把已经实现了接口的类当成成员来用,因为我以前使用delphi7,delphi中处理这种情况使用Implements关键字,意思是一个类如果实现IA,IB,IC三个接口,但是IA和IB已经被ClassA,ClassB实现了,那么在用Component实现IA,IB,IC的时候,可以使用Implements关键字告诉编译器:其中IA和IB的实现委托给ClassA和ClassB即可,Component只要实现IC就可以了,我想问的是C#里面有没有这种机制?