代码之家  ›  专栏  ›  技术社区  ›  Fredou

是否可以选择Linq2XML进行反射?

  •  0
  • Fredou  · 技术社区  · 14 年前

    关于上一个问题的新问题

    之前的问题是:

    我必须填充一些包含30-50属性的对象,从一些Linq到XML结果

    有没有一种方法可以填充这些对象而不必手动写入每个特定的 道具=价值 为了每一个财产?

    一种

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

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

    2 回复  |  直到 14 年前
        1
  •  0
  •   Jacob    14 年前

    如果要创建的类具有一致的XML映射,则可以使用.NET序列化框架之一,而不是或与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>;
    }
    
        2
  •  0
  •   Vinay B R    14 年前

    您无法避免显式地应对值。
    如果您有大量的字段,那么我更愿意保留Xelement并在需要时从中读取值,而不是将其转换为对象。