Возможно ли одним методом получить Generic-поле разных типов
От: LWhisper  
Дата: 22.01.16 17:42
Оценка:
Есть Generic-тип, например List<T>.
Есть несколько объектов: List<Int32>, List<Object>, List<String>
Возможно ли сгенерировать общий метод на основе определения List<>, который бы получал значение вложенного Generic-поля, например T[] _items;

То есть что-нибудь наподобие:
delegate Array GetItems(Object obj);

GetItems getItems = EmitGetItems(typeof(List<>));
Array arr1 = getItems(new List<Int32>{1, 2, 5});
Array arr2 = getItems(new List<Object>(null, "String", new List<Int32>());
Array arr3 = getItems(new List<String>("Str1", "Str2");


Reflection.GetValue, к примеру, такого не умеет, если ты пытаешься вытащить поле, дескриптор которого помечен, как IsGenericParameter. Но, может быть, это можно сделать при помощи IL'а?
Отредактировано 22.01.2016 17:42 LWhisper . Предыдущая версия .
.net c# il expression reflection hack
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.