【发布时间】:2009-01-20 15:58:14
【问题描述】:
我想写一个通用的方法来创建一个指定类型的新实例。我试过了
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() 需要指定一个实际类型。我不知道是否可以在运行时提供类似的东西,但是上面的代码无法编译。
所以我有一个未知引用类型的实例,我需要创建多个相同类型的实例。
有人知道实现这种行为的技术吗?
【问题讨论】: