如何使用反射來創建具有自定義類的通用列表(列表<CustomClass>)?我需要能夠添加值並使用 propertyInfo.SetValue(..., ..., ...)
來存儲它。作爲一些其他的數據結構,我會更好地存儲這些List <>嗎?使用反射設置屬性的類型列表<CustomClass>
編輯:
我應該指定的對象更像是這個,但是馬克Gravell的答案仍然工作。
class Foo
{
public List<string> Bar { get; set; }
}
如何使用反射來創建具有自定義類的通用列表(列表<CustomClass>)?我需要能夠添加值並使用 propertyInfo.SetValue(..., ..., ...)
來存儲它。作爲一些其他的數據結構,我會更好地存儲這些List <>嗎?使用反射設置屬性的類型列表<CustomClass>
編輯:
我應該指定的對象更像是這個,但是馬克Gravell的答案仍然工作。
class Foo
{
public List<string> Bar { get; set; }
}
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);
}
}
這裏是服用名單< >類型,使之成爲名單<串>一個例子。
var list = typeof(List < >).MakeGenericType(typeof(string));
這不會給你一個任何類型的列表 - 它給你一個類型 – 2008-11-24 20:08:06
是字符串真的是自定義類嗎?我希望你會談論像使用反射來調用一個類MyClass,它有一個List的屬性,其中SomeOtherClass是我做的一個類,它有一堆屬性和構造函數等...... –
topwik
2009-08-20 19:48:49
好的,所以字符串對於一個班級來說是不好的選擇,但它足以作爲解釋。就我所知的有限知識而言,我們可以用幾乎任何類來替換字符串,但在我要求的情況下,列表中的類和類型僅通過反射來找到。 – dragonjujo 2010-01-03 00:45:49