我有方法:
void EmberIU<T>() where T : Form
{
for (int i = 0; i < ins.Length; i++)
ins[i].Click += delegate { ShowForm<T>("arg")); };
}
我可以使用该方法,如:
var thing = Type.GetType("namespace.class");
EmberIU<thing>()
答案 0 :(得分:2)
您需要使用Type.MakeGenericType(params Type[])
方法(请参阅此处:http://msdn.microsoft.com/en-us/library/system.type.makegenerictype%28v=vs.110%29.aspx)
例如:
Type yourType = Type.GetType("namespace.class");
Type emberType = typeof(EmberIU<>).MakeGenericType(yourType);
答案 1 :(得分:0)
不,你不能。必须在编译时定义type参数。
如果要实现此功能,则必须使用Reflection。看看Jon Skeets answer。