我想编写一个通用方法来创建指定Type的新实例.我试过了
protected T CreateNew() where T : new() { return new T(); }
这是有效的,但前提是我在编译时指定了类型,就像
var x = CreateNew();
关键是,我需要做这样的事情
ISomeInterface inter; if (selection == 1) inter = new SomeClass(); else inter = new SomeClass2(); // ... ISomeInterface inter2 = CreateNew();
SomeClass实现ISomeInterface.但由于CreateNew()需要指定实际类型,因此无法编译.我不知道是否可以在运行时提供类似的东西,但上面的代码无法编译.
所以我有一个未知引用类型的实例,我需要创建几个相同类型的实例.
有没有人知道一种技术来实现这种行为?
泛型的要点是提供一种机制,当在编译时知道类型时,可以为不同类型重用代码.在这种情况下,您在编译时不知道类型.
我建议你用 Activator.CreateInstance(inter.GetType());