Использования только .net 3.5 У меня есть класс образца:Instantiate напечатал IEnumerable из компиляции известного типа отражения
public class Table1
{
public IEnumerable<Table2> Items { get; set; }
}
Ее разновидность ОРМА и мне нужно материализовать коллекцию ленивым вычисленного типа
I пытаясь найти способ присвоить экземпляр свойству Элементов, например, путем List<Table2>
Когда я создаю экземпляр с активатором, он возвращает объект, который я наклоняю ввергнуть к необходимому т Ype
var t = typeof(List<>);
var gt = t.MakeGenericType(typeof(Table2));
object instance = Activator.CreateInstance(gt);
var table1 = new Table1();
table1.Items = instance; //canot use cast here
И проблема присвоить переменной 'объект', чтобы набранный IEnumerable
Как это работает в большинстве ИЛИ-mapers?
Могу ли я использовать Reflection.Emit для генерации бетонного типа?
Могу ли я использовать Castle/Linfu?
EDIT:
Я Канот использовать любой прямой бросок, потому что он требует ссылки Table2, который я не могу harcode
РЕШЕНИЕ:
Через некоторое время я нашел решение самостоятельно. Для этого нужно использовать отражение для заданного экземпляра:
var table1 = new Table1();
var table1Type = typeof(Table1);
var prop = table1Type.GetProperty("Items");
prop.SetValue(table1, instance, null);
«который я наклоненное бросание для нужного типа» - почему нет? –
Остин Салонен, см. Править – devi