两个类有共同的方法和属性

Adm*_*ian 6 .net c# duck-typing class dynamic

我有两节课.

A类:

class A() {
    public void QQ() {}
    public void WW() {}
}
Run Code Online (Sandbox Code Playgroud)

和B类:

class B() {
    public void QQ() {}
    public void WW() {}
}
Run Code Online (Sandbox Code Playgroud)

它们不共享相同的接口或抽象类.A和B有两个截然不同的层次,我现在无法改变它.

我想写一个适用于A和B并使用QQ和WW方法的程序.

我能这样做吗?你能建议我可以学习的任何文件吗?

坦克

Ham*_*jam 8

这叫做Duck Typing.

你可以使用动力学

void Foo(dynamic dy)
{
    dy.QQ();
}
Run Code Online (Sandbox Code Playgroud)

你也可以使用反射.(参考)

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");
}
Run Code Online (Sandbox Code Playgroud)