是否有办法从几个类中使用具有相同名称的继承方法
本文关键字:方法 继承 是否 几个 | 更新日期: 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