如何使用反射来创建具有自定义类(List
propertyInfo.SetValue(..., ..., ...)
来存储它。 将这些 List<> 存储为其他数据结构会更好吗?
编辑:
我应该指定该对象更像这样,但 Marc 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);
}
}
这是采用
List<>
类型并将其转换为 List<string>
的示例:
var list = typeof(List<>).MakeGenericType(typeof(string));