Инициализация generic классов используя System.Type - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть метод который возвращает через делегат имена свойств объекта и ссылку на сами свойства в виде object.
 public static void GetProperties <T>(T target, PropertiesHandler handler)
        {
            Type type = target.GetType();
            PropertyInfo[] propInfos = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            for (int i = 0; i < propInfos.Length; i++)
             
            {
                handler(propInfos[i].Name, propInfos[i].GetValue(target),i);
            }
        }
  public delegate void PropertiesHandler(string prpertyName, object value, int index);
Возникла ситуация в которой свойства объекта generic классы. Приведу на примере листов. Generic не может принять объект Type, подскажите как решить задачу).
  GetProperties ( myObject , (string name, object value, int index) => 
            {
                Type type = typeof (value);               
               
                  (value as List <type >) = new List<type>(mydata);
            });

Решение задачи: «Инициализация generic классов используя System.Type»

textual
Листинг программы
Type type = typeof (value);
Type listType = typeof(List<>).MakeGenericType(type);
IList list = (IList)Activator.CreateInstance(listType);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.333 из 5
Похожие ответы