Рекурсивно создать 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д