【发布时间】:2016-01-01 05:37:10
【问题描述】:
如何做这样的事情
List<Type:IMyInterface> a = new List<Type:IMyInterface>;
a.Add(typeof(MyClass1)); //MyClass1..3 implementing IMyInterface
a.Add(typeof(MyClass2));
a.Add(typeof(MyClass3));
IMyInterface c = default(a[1]); //create MyClass2 object
a.Add(typeof(Object)); //must fail
不先构造对象或稍后检查类型?
【问题讨论】:
-
default(a[1]) 将始终返回
null,您需要更好地详细说明用例。 -
default(Type t)必须返回使用默认无参数构造函数创建的对象(如果存在)。在我的情况下,Type t可以是typeof(MyClass1..3)。 -
什么应该只接受类型,为什么?你想做什么?
-
default(a[1])甚至不会被编译(为什么不Activator.CreateInstance?)。我建议实现您自己的集合聚合List<Type>并在添加之前验证类型。