我想编写一个通用的方法,该方法创建指定类型的新实例。我试图创建一个n最常见的类型的新实例
protected T CreateNew<T>()
where T : new()
{
return new T();
}
这工作,如果我指定在编译时的类型,就像
var x = CreateNew<Point>();
的一点是,我需要做这样的事情
ISomeInterface inter;
if (selection == 1)
inter = new SomeClass();
else
inter = new SomeClass2();
// ...
ISomeInterface inter2 = CreateNew<typeof(inter)>();
但只
其中SomeClass实现ISomeInterface。 但是,由于CreateNew()需要指定的实际类型,因此无法编译。我不知道在运行时是否可以提供类似的内容,但上面的代码无法编译。
所以我有一个未知引用类型的实例,我需要创建几个相同类型的实例。
有谁知道一种技术来实现这种行为?
非常感谢! 我只是对通用方法感到困惑,因为我猜我没有正确理解用C#编写的泛型的一些内容,说明泛型可以在运行时重用(与C++模板不同) – 2009-01-20 16:09:55