0

私は次のコードを持っていて、これを関数で呼び出します。実行時にTypeotherType動的から呼び出す必要があります。

// 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;
}

すべてのオブジェクトは同じ親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();のメソッド ジェネリック型を使用しないようにするには、オブジェクトをすべて使用し、型はパラメーターとして一時停止されます

4

1 に答える 1

1

試すActivator.CreateInstance

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

MSDNから

Activator.CreateInstance->指定されたタイプのデフォルトコンストラクタを使用して、そのタイプのインスタンスを作成します。

于 2013-01-10T17:26:07.393 に答える