我如何正确地传递这个类型

本文关键字:类型 正确地 | 更新日期: 2023-09-27 18:01:49

我想这样做:

Type curType = blah blah...;
dataSet.Add( NewItem<typeof(curType)>() );

与NewItem()为:

T NewItem<T>(){
  return (T)Activator.CreateInstance(typeof(T));
}

,但我似乎不能传递一个动态类型在NewItem无论我尝试的方式

我如何正确地传递这个类型

Activator.CreateInstance有一个过载,它需要一个Type实例,你已经在NewItem包装器内部调用。您不妨直接调用它,而不是尝试动态调用NewItem

dataSet.Add(curType);

如果你真的只想要一个Activator.CreateInstance(...)的包装器:

// using System.Reflection;
Type curType = // blah blah...;
dataSet.Add(GetType().GetMethod("NewItem").MakeGenericMethod(curType).Invoke(this, null));
省略包装器,直接使用dataSet.Add(Activator.CreateInstance(curType));调用Activator.CreateInstance可能会更有意义。