两个具有通用方法和属性的类

本文关键字:方法 属性 两个 | 更新日期: 2023-09-27 18:27:03

我有两个类。

A类:

class A() {
    public void QQ() {}
    public void WW() {}
}

B类:

class B() {
    public void QQ() {}
    public void WW() {}
}

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

我想写一个适用于a和B的程序,并使用QQ和WW方法。

我能做到吗?你能给我推荐一些我可以研究的文件吗?

储罐

两个具有通用方法和属性的类

这叫做鸭子打字。

你可以使用动态

void Foo(dynamic dy)
{
    dy.QQ();
}

您也可以使用反射。(参考)

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");
}

您可以检查对象是否为特定类型,然后对其进行强制转换并调用其方法:

void InvokeQQ(object o){
    if(o is A)
        (o as A).QQ();
    if(o is B)
        (o as B).QQ();
}

在C#6中,您可以将其简化为

void InvokeQQ(object o){
    (o as A)?.QQ();
    (o as B)?.QQ();
}

是否可以创建一个父类并将这些方法放入其中,然后让a和B从该类继承?