使用在运行时确定的类型参数构建通用Object

时间:2013-01-10 17:21:24

标签: c# .net generics dynamic reflection

我有下面的代码,我通过函数调用它,买我需要在运行时调用它类型为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;
}

所有对象具有相同的Parent ParentClass

//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(); 中的metod不要使用泛型类型 使用对象all,现在Type被作为参数

1 个答案:

答案 0 :(得分:1)

尝试Activator.CreateInstance

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

来自MSDN

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