0

有没有办法从几个类中使用具有相同名称但不进行强制转换的继承方法?

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());
     }
}
4

3 回答 3

3

不,按照您的描述进行操作称为多重继承。在不继承方法子集的情况下执行相同的操作称为 mixin 。抱歉,这也不是 c# 的功能。

于 2013-06-06T00:18:54.383 回答
2

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

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());
}
于 2013-06-05T21:46:12.153 回答
0

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

于 2013-06-05T21:43:58.977 回答