Рекурсивно создать generic type - C#
Формулировка задачи:
Всем привет.
Есть такая необходимость.
Пишу следующий код
вызываю следующим образом
выкидывает methodMissingException
при этом если написать так
все прекрасно работает.
т.е. конструктор такой есть.
К слову если вызвать конструктор без параметров для дженерик типа
return Activator.CreateInstance(genericType);
все прекрасно работает.
static Object CreateType<TObject>(params Object[] parameters)
{
var type = typeof (TObject);
if (type.IsGenericType)
{
var genericTypeArgs = type.GetGenericArguments();
var def = type.GetGenericTypeDefinition();
var genericType = def.MakeGenericType(genericTypeArgs);
return Activator.CreateInstance(genericType, parameters);
}
return Activator.CreateInstance(type, parameters);
}return CreateType<TCacheObject>(new object[] {cache, findDif}) as IResultListCache<TCacheObject>;var resultCache = new ResultListCache<TResultObject>(cache, findDif);
Решение задачи: «Рекурсивно создать generic type»
textual
Листинг программы
static Object CreateType<TGeneric>(Type type, params Object[] parameters)
{
if (type.IsGenericType)
{
var genericType = type.MakeGenericType(typeof (TGeneric));
return Activator.CreateInstance(genericType, parameters);
}
return Activator.CreateInstance(type, parameters);
}
object type = CreateType<int>(typeof (List<>), null);