我希望有人能告诉我哪种方法可以更有效和/或更正确地检索数据。
我有一些XML文件来自第三方及其附加的DTD。所以我已经将DTD转换为C#类,因此我可以将XML反序列化为类。我现在需要映射该数据以匹配我的数据结构的设置方式。
问题最终是;我应该使用反射或LINQ。 XML的格式在某种程度上是通用的,其中的东西保存在Items [Array]或Item [Object]中。
我做了以下事情:
TheirClass class = theirMessage.Items.Where(n=> n.GetType() == typeof(TheirClass)).First() as TheirClass;
MyObject.Param1 = ConversionHelperClass.Convert(class.Obj1);
MyObject.Param2 = ConversionHelperClass.Convert(class.Obj2);
我也可以用Reflection做一些事情,我传递了我试图阻止的类和属性的名称。
在这里尝试以正确的方式做事。
答案 0 :(得分:5)
作为一般规则,我建议避免反思,除非绝对必要!它引入了性能开销,意味着你错过了编译器团队努力工作的所有可爱的编译时检查。
Linq to entities本质上是对内存数据集进行查询,因此它可以非常快。
如果您的最终目标是解析xml文档中的信息,我建议您查看XDocument class。它为查询xml文档提供了一个非常好的抽象。