2013-06-05 52 views
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()); 
    } 
} 
+10

C#不支持多類繼承;你的代碼不會編譯。 – dlev

回答

0

這裏有一些非語言工具。退房PostSharp

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

號這樣做,當你描述被稱爲多重繼承。在方法的一個子集上做同樣的事情沒有繼承被稱爲mixin。這兩者都不是C#的特色,對不起。

相關問題