仅使用 .net 3.5 我有示例类:
public class Table1
{
public IEnumerable<Table2> Items { get; set; }
}
它是一种 ORM,我需要通过惰性计算类型实现集合
我试图找到将实例分配给属性 Items的方法,例如通过List<Table2>
当我通过 Activator 创建实例时,它返回对象,我无法将其转换为所需的类型
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 是个问题
它在大多数 OR-mapers 中是如何工作的?
我可以使用 Reflection.Emit 来生成具体类型吗?
我可以使用Castle/Linfu吗?
编辑:
我不能使用任何直接演员,因为它需要参考表2,我不能硬编码
解决方案:
一段时间后,我自己找到了解决方案。它需要对集合实例使用反射:
var table1 = new Table1();
var table1Type = typeof(Table1);
var prop = table1Type.GetProperty("Items");
prop.SetValue(table1, instance, null);