是否可以在选择LINQ2XML中进行反射?

时间:2010-08-31 14:15:51

标签: linq-to-xml

关于上一个问题的新问题

之前的问题是:

  

我必须填充一些包含30-50属性的对象,从几个linq到xml结果

     

有没有办法填充这些对象,而无需为每个属性手动编写每个特定的 prop = value

     

一种

(from xml in myXml select xml).ToList<Object>;

在select中,是否可以使用反射根据xml字段的名称为我的对象赋值?

2 个答案:

答案 0 :(得分:0)

您无法明确避免应对值。
如果你有大量的字段,我宁愿坚持使用Xelement并在需要时从中读取值而不是将其转换为对象

答案 1 :(得分:0)

如果您的类要创建具有一致XML映射的实例,则可以使用其中一个.NET序列化框架代替LINQ to XML或与LINQ to XML结合使用。例如,如果您正在使用数据协定序列化,那么给定此类:

[DataContract]
public class MySerializableObject
{
    [DataMember]
    public string PropertyA { get; set; }

    [DataMember]
    public int PropertyB { get; set; }
}

您可以使用以下代码:

using (var someStream = OpenXmlStream())
{
    var deserializer = new DataContractSerializer(
        typeof(List<MySerializableObject>));
    var myList = deserializer.ReadObject(someStream) 
        as List<MySerializableObject>;
}