我有接口和3個派生它的類,但是如何爲每個類型使用1個變量?創建接口子類的實例
public interface IBuilder<T> where T: System.IConvertible{}
public class SimpleBuilder : IBuilder<SimpleCollagePatterns>{}
public class CreativeBuilder : IBuilder<CreativeCollagePatterns>{}
public class ShapeBuilder : IBuilder<ShapeCollagePatterns>{}
我需要創建類的實例時,它單曲必要
我有IBuilder<IConvertible> currentBuilder
變量,但只有當我改變IBuilder<IConvertible> currentBuilder
到IBuilder<SimpleCollagePatterns> currentBuilder
我不能創建的任何Builder
this.currentBuilder = new SimpleBuilder(); //Doesn`t work
實例或其他類型我可以創建這種類型的生成器,但我需要有可能創建任意類型
接口不是類,所以你不能創建它們的實例。創建實例的唯一方法就是您選擇的方式,即定義實現該接口的類,例如SimpleCollagePatterns。另外接口不包含任何特定的代碼,所以你爲什麼要創建它們的實例呢?爲什麼不將IBuilder改爲父類? – jambonick
你面臨的問題是你有'I'和'I '(即兩個不同的泛型參數使用相同的泛型接口),並且'T1'和'T2'之間有一個繼承層次結構。問題是'I '和'I '之間沒有繼承層次結構。您可以使用協變和逆變來處理這取決於繼承的方式,但是這會對類型的使用產生非常特定的限制,可能不是您想要的。總之,這是不可能做到的。 –