Generic ClassのCreateInstance

  1. GenericのTypeを取得
  2. 指定型のTypeを取得
  3. GenericのTypeから、MakeGenericType()を叩いて生成するTypeを取得
  4. Activator.CreateInstance

てな流れ。リフレクション万歳だねぇ。。


プロパティ(PropertyInfo)からGeneric型を動的生成した例

//Get generic type
Type genericType = property.PropertyType.GetGenericTypeDefinition();

//Get argument types
Type[] argsType = property.PropertyType.GetGenericArguments();

//Get type for construction
Type createType= genericType.MakeGenericType(argsType);

//Create!
object genericObject = Activator.CreateInstance(createType);

MSDN:How to: Examine and Instantiate Generic Types with Reflection | Microsoft Docs