我有一个从xml文件读取的对象属性列表,并希望通过反射(而不是xml序列化)创建对象。例如,我有一个属性
List<Employee> Employees { get; set; }
我想从以下xml文件初始化此列表:
<Employees>
<Employee>
<FirstName>John</FirstName>
<LastName>Zak</LastName>
<Age>20</Age>
</Employee>
</Employees>
我可以动态创建Employees对象,例如
Type employees = (type of Employees through reflection)
object obj = Activator.CreateInstance(employees);
我的问题是如何填充员工列表?我想以通用的方式(没有强制转换为Employee)来使这个代码可以重用。
答案 0 :(得分:0)
为什么要使用Reflection?
这是XmlSerializer能够为您处理的事情。
LINQ to XML也是一种可能性(特别是如果您正在编写一个不断变化的XML文档)。用于通过LINQ to XML从XML构造对象的代码更适合处理XML格式的更改。
击>
没关系......如果您的目标是.NET 2.0,LINQ to XML将无法帮助您。
答案 1 :(得分:0)
如果我正确理解了您的问题,那么(employees
和obj
变量来自您的代码):
var employee = BuildEmployeeFromXml();
employees.GetMethod("Add").Invoke(obj, new[] {employee});
// repeat the above for as many employee objects you have
Console.WriteLine(list);
代码假定您已经知道如何在employee
方法中从XML构建BuildEmployeeFromXml()
对象。如果您不这样做,请参阅我的图书馆Fasterflect以获取快速和&amp;使用反射构造对象的简单方法。