在对象上设置属性的最快方法?

时间:2009-04-01 12:21:06

标签: .net

假设您有一个包含大量属性的业务对象。在不使用ORM工具的情况下设置属性的最简单,最好的方法是什么?

这意味着从数据读取器对象设置属性,例如

client.Name = (string)reader["Name"];

对象包含其他复杂对象的情况怎么样?

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

好吧,您可以使用反射来生成分配代码。

答案 1 :(得分:0)

序列化和/或反射是一种选择。

答案 2 :(得分:0)

你要求三件事:

  • 最快
  • 最简单
  • 最好的
他们不一样! 最快(执行时)将是编译代码;即你编写常规C#来正确设置属性。比这更容易使用反射 - 但这很慢。您还需要一些映射子属性的机制...(如果读者之间没有1:1的对应关系,还需要映射常规属性)。使用成员(属性/字段)上的自定义属性可能最好解决这个问题。

作为对速度(过度反射)的妥协,您可以使用Delegate.CreateDelegate来获取属性设置器 - 但这是很多工作。也许另一种选择是HyperDescriptor;这允许类似反射的访问,但速度要快得多。

最佳?可能使用现有代码 - 即ORM工具;少写和调试。