我有一个界面
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}
}
答案 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)
鉴于myClass
是MyClass
的实例且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(..);