如何调用类中实现的接口的方法?

时间:2011-10-14 11:56:08

标签: c# interface

我有一个界面

 public  interface IMethod
 {
     String Add(string str);
     Boolean Update(string str);
     Boolean Delete(int id);
 }

我已经声明了另一个接口 以IMethod为财产。

public interface IFoo
{
     IMethod MethodCaller { get  ; set; }  
}

现在我在我的一个类中实现了IFoo接口,我想从中调用IMethods方法。

班级实施

 public MyClass : IFoo
 { 
     public IMethod MethodCaller{ get  ; set; }  
 }

我该怎么做?如何从 MyClass

调用添加更新删除方法

实现IMethod的MyClasses如下:

public class foo1:IMethod
{

         public String Add(string str){ return string.Empty;}

         Boolean Update(string str){//defination}

         Boolean Delete(int id){ //defination}
}

public class foo2:IMethod
{

         public String Add(string str){ return string.Empty;}

         Boolean Update(string str){//defination}

         Boolean Delete(int id){ //defination}
}

4 个答案:

答案 0 :(得分:1)

您仍然没有定义任何实现IMethod的具体类 - 您只定义了类型为IMethod属性 - 现在您需要分配一个具体的这个属性的类,所以你可以调用它上面的方法。完成后,您只需在MethodCaller属性上调用方法:

string result = MethodCaller.Add(someFoo);

答案 1 :(得分:1)

课程内:

public MyClass : IFoo   
{
   public void CallAllMethodsOfIIMethodImpl()
   {
       if (this.MethodCaller != null)
       {
          this.MethodCaller.Add( ... );
          this.MethodCaller.Delete( ... );
          this.MethodCaller.Update( ... );
       }
   }
}

<强>外:

MyClass instance = new MyClass();
if (instance.MethodCaller != null)
{
   instance.MethodCaller.Add( ... );
   instance.MethodCaller.Delete( ... );
   instance.MethodCaller.Update( ... );
}

答案 2 :(得分:0)

鉴于myClassMyClass的实例且MethodCaller已设置为具体实现,您可以调用这样的方法:

myClass.MethodCaller.Add(...);
myClass.MethodCaller.Update(...);
myClass.MethodCaller.Delete(...);

答案 3 :(得分:0)

您必须创建一个implements IMethod接口的内部类。

public MyClass : IFoo
 { 
   private TestClass _inst;
   public IMethod MethodCaller
   { 
     get 
        {
         if(_inst==null)
           _inst=new TestClass();
         return _inst;
        }
      set 
        {
          _inst=value;
         }  
    }
   public class TestClass : IMethod
   {
     public String Add(string str) {}
     public Boolean Update(string str) {}
     public Boolean Delete(int id) {}
   }
 }

调用方法:

MyClass instance=new MyClass();
instance.MethodCaller.Add(..);

OR

 IMethod call=new MyClass().MethodCaller;
 call.Add(..);