使用在运行时确定的类型参数构建泛型对象

本文关键字:类型参数 构建 泛型 对象 运行时 | 更新日期: 2023-09-27 17:51:18

i有以下代码,我通过函数调用它,但我需要在运行时从类型otherType动态调用它。

// this in code this works fine
DooClass newOne = GetInstance<DooClass>();
// The function
private T GetInstance<T>() where T : new()
{
    T item = SomeClass.Instance.GetItem<T>();
    if (item == null)
    {
       item = new T();
    }
    return item;
}

所有的对象都有相同的父类

//This is what i want to do or something like this
public void SomeFunction(Type someType)
{
   ParentClass newObj = GetInstance<someType>();
}

/////使用下面的注释解决了这个

private ParentClass GetElement(Type theType)
{
   ParentClass item = (ParentClass)SomeClass.Instance.GetItem(theType);
   if (item == null)
   {
      item = (ParentClass)Activator.CreateInstance(theType);
   }
   return item;
}

类中的方法SomeClass.Instance.GetItem();不使用泛型类型使用对象all,现在类型作为参数传递

使用在运行时确定的类型参数构建泛型对象

尝试Activator.CreateInstance

  ParentClass newObj = (ParentClass)Activator.CreateInstance(type)
从MSDN

Activator.CreateInstance ->使用指定类型的默认构造函数创建该类型的实例