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
是的,我认为使用参数化的泛型类型对我来说这样做,它似乎没有。 –