Is there any rational reason why the code below is not legal in C#?
class X: IA, IB { public X test() // Compliation Error, saying that X is not IB {
You could use explicit interface implementation to avoid the problem.
class X : IA, IB { public X test() { return this; } IB IA.test() { return this; } } interface IA { IB test(); } interface IB { }