Использование Reflection для установки свойства с типом списка <CustomClass>

Как я могу использовать отражение для создания общего списка с пользовательским классом (List <CustomClass> )? Мне нужно иметь возможность добавлять ценности и использовать propertyInfo.SetValue(..., ..., ...), чтобы сохранить его. Будет ли я лучше хранить эти List < > в качестве некоторой другой структуры данных?

Edit:

Я должен был указать, что объект больше похож на этот, но ответ Марка Гравелла все еще работает.

class Foo
{
    public List<string> Bar { get; set; }
}

Ответы

Ответ 1

class Foo
{
    public string Bar { get; set; }
}
class Program
{
    static void Main()
    {
        Type type = typeof(Foo); // possibly from a string
        IList list = (IList) Activator.CreateInstance(
            typeof(List<>).MakeGenericType(type));

        object obj = Activator.CreateInstance(type);
        type.GetProperty("Bar").SetValue(obj, "abc", null);
        list.Add(obj);
    }
}

Ответ 2

Здесь пример приема списка < > тип и превратить его в List <string> .

var list = typeof (List < gt;). MakeGenericType (typeof (string));