我有两节课。
A类:
class A() {
public void QQ() {}
public void WW() {}
}
和B组:
class B() {
public void QQ() {}
public void WW() {}
}
他们不共享相同的界面或抽象类。 A和B有两个截然不同的层次,我现在无法改变它。
我想编写一个适用于A和B的程序,并使用QQ和WW方法。
我能这样做吗?你能建议我可以研究的任何文件吗?
罐
答案 0 :(得分:8)
这称为Duck Typing。
您可以使用动态
void Foo(dynamic dy)
{
dy.QQ();
}
您也可以使用反射。 (reference)
public static void CallQQ(object o)
{
var qq = o.GetType().GetMethod("QQ");
if (qq != null)
qq.Invoke(o, new object[] { });
else
throw new InvalidOperationException("method not found");
}
答案 1 :(得分:4)
您可以检查对象是否属于特定类型,然后将其强制转换并调用其方法:
controls
在C#6中,您可以将其简化为
void InvokeQQ(object o){
if(o is A)
(o as A).QQ();
if(o is B)
(o as B).QQ();
}
答案 2 :(得分:-1)
你能不能创建一个父类并将这些方法放入其中,然后让A和B从该类继承?