0
我有三個類,一個基類需要一個泛型類型,它必須是抽象類的一個子類,而後者又需要一個必須實現接口的泛型類型。具有抽象類和接口的泛型類型
對於測試,我有一個表單將啓動基類,給出抽象類的子類和接口的實現。這裏是我的類聲明,並調用基類的構造函數。
public class BaseClass<AC_IC> where AC_IC : AbstractClass<InterfaceClass>
public abstract class AbstractClass<IC> where IC: InterfaceClass
public interface InterfaceClass
public class ExtendsAbstractClass<II> : AbstractClass<InterfaceClass>
public class ImplementsInterface : InterfaceClass
vBC = new BaseClass<ExtendsAbstractClass<ImplementsInterface>>();
我相信我能同時創建繼承的情況下/使用以下電話(只有一個類將在構造函數的參數)
(AC_IC) Activator.CreateInstance(typeof(AC_IC), new object[] { vParameter});
(II) Activator.CreateInstance(typeof(II));
從BaseClass的和抽象類中實現類
編輯:上面的調用是在BaseClass和AbstractClass中,因此不知道我將在隨後使用哪些類,所以不能通過類名指定,可能有許多不同類的實現範圍。
對於這兩個構造函數調用,我都會收到錯誤'無法創建抽象類的實例'&'無法創建接口的實例'。我如何讓編譯器知道我作爲泛型所傳遞的類是where
子句中的類的子類,因此可以創建。
任何想法社區???
我應該說的這兩行代碼都在BaseClass的和AbstractClass classess,所以不知道ExtendsAbstractClass和ImplementsInterface是否被使用,這個想法是創建這個解決方案作爲一個框架,而不是具體到兩個類 –
@ColinSteel啊哈,我看你要去哪裏,我想 - 你想要be ab le「去掉」實際的實施類是什麼? – JerKimball
是的,我認爲使用參數化的泛型類型對我來說這樣做,它似乎沒有。 –