是否有办法从几个类中使用具有相同名称的继承方法

本文关键字:方法 继承 是否 几个 | 更新日期: 2023-09-27 18:17:01

是否有一种方法可以从几个类中使用具有相同名称的继承方法,但不需要强制转换?

public class A {
     someMethod(A a) {}
}
public class B {
     someMethod(B b) {}
}
public class Client : A, B {
     public Client() {
          someMethod(new A());
          someMethod(new B());
     }
}

是否有办法从几个类中使用具有相同名称的继承方法

No。像你描述的那样做被称为多重继承。在方法的子集上做同样的事情而不继承称为mixin。抱歉,这两个都不是c#的特性。

您可以通过显式接口实现和组合来实现这一点:

public interface IA {
     someMethod(A a) {}
}
public interface IB {
     someMethod(A a) {}
}
public class A : IA {
    someMethod(B b) {}
}
public class B : IB {
    someMethod(B b) {}
}
public class Client : IA, IB {
    public Client() {
        ((IA)this).someMethod(new A());
        ((IB)this).someMethod(new B());
     }
     IA.someMethod(new A());
     IB.someMethod(new B());
}

有一些非语言工具可以做这类事情。查看PostSharp