慕森王
实际上,您将无法写出最后一行。但是您可能不想创建对象,只是为了或为了创建它。您可能希望对新创建的实例调用一些方法。然后,您将需要类似于接口的内容:public interface ITask {
void Process(object o);}public class Task<T> : ITask{
void ITask.Process(object o)
{
if(o is T) // Just to be sure, and maybe throw an exception
Process(o as T);
}
public void Process(T o) { }}并以:Type d1 = Type.GetType("TaskA"); //or "TaskB"Type[] typeArgs = { typeof(Item) };
Type makeme = d1.MakeGenericType(typeArgs);ITask task = Activator.CreateInstance(makeme) as ITask;
// This can be Item, or any type derived from Itemtask.Process(new Item());在任何情况下,你都不会被静态地投到你事先不知道的类型中(在这个例子中是“makame”)。ITASK允许你进入你的目标类型。如果这不是你想要的,你可能需要在你想要达到的目标上更具体一点。