有没有办法从几个类中使用具有相同名称但不进行强制转换的继承方法?
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());
}
}
有没有办法从几个类中使用具有相同名称但不进行强制转换的继承方法?
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());
}
}
不,按照您的描述进行操作称为多重继承。在不继承方法子集的情况下执行相同的操作称为 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。