リフレクションを使用して作成されたオブジェクトのリストがあります。それらはすべて同じ型ですが、コンパイル時には型が不明です。
このリストを(リフレクションも使用して)任意のIEnumerableであるオブジェクト プロパティに割り当てる最良の方法を見つけようとしています。
List<object>
ArrayList
Custom : List<object>
私が持っている唯一のアプローチは、プロパティが ICollection であると想定し、IEnumerable をループして各項目を追加することです。(以下を参照してください。list
は IEnumerable ソース、key
はオブジェクト プロパティの文字列名、 はresult
オブジェクト自体です)
foreach (object item in list) {
PropertyInfo prop = result.GetType().GetProperty(key);
var collection = prop.GetValue(result, null);
Type collectionType = collection.GetType();
MethodInfo add = collectionType.GetMethod("Add", BindingFlags.Public | BindingFlags.Instance);
add.Invoke(collection, new object[] { item });
}