.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-mapper でどのように機能しますか?
Reflection.Emit を使用して具象型を生成できますか?
Castle/Linfu を使用できますか?
編集:
ハーコードできない参照Table2が必要なため、直接キャストを使用できません
解決:
しばらくして、自分で解決策を見つけました。セット インスタンスにリフレクションを使用する必要があります。
var table1 = new Table1();
var table1Type = typeof(Table1);
var prop = table1Type.GetProperty("Items");
prop.SetValue(table1, instance, null);