我有三个类,一个基类采用必须是抽象类的子类的泛型类型,而抽象类又采用必须实现接口的泛型类型。
为了测试,我有一个表单,它将启动基类,给出抽象类的子类和接口的实现。这是我的类声明,并调用基类构造函数。
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>>();
我相信我可以使用以下调用从 BaseClass 和 AbstractClass 中创建继承/实现类的实例(只有一个类在构造函数中有参数)
(AC_IC) Activator.CreateInstance(typeof(AC_IC), new object[] { vParameter});
(II) Activator.CreateInstance(typeof(II));
编辑:上述调用在 BaseClass 和 AbstractClass 内,因此不知道我随后将使用哪些类,因此不能通过类名指定,对于一系列实现,可能有许多不同的类对。
对于这两个构造函数调用,我都会收到错误“无法创建抽象类的实例”和“无法创建接口的实例”。如何让编译器知道我作为泛型类型传递的类是where
子句中类的子类,因此可以创建。
任何想法社区?