检索数据LINQ vs Reflection

PSU*_*rdi 4 c# linq reflection

我希望有人能告诉我哪种方法更有效和/或更正确地检索一些数据.

我有一些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);
Run Code Online (Sandbox Code Playgroud)

我也可以用Reflection做一些事情,我传递了我试图阻止的类和属性的名称.

在这里尝试以正确的方式做事.

Ric*_*lly 5

作为一般规则,我建议避免反思,除非绝对必要!它引入了性能开销,这意味着您错过了编译器团队努力工作的所有可爱的编译时检查.

Linq to entities本质上是对内存数据集进行查询,因此它可以非常快.

如果您的最终目标是解析xml文档中的信息,我建议您查看XDocument类.它为查询xml文档提供了一个非常好的抽象.

  • 反思非常昂贵.如果可以,请避免使用它. (2认同)