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

使用反射来解决这个问题,还有别的方法吗?

  •  2
  • Fredou  · 技术社区  · 15 年前

    我有一个keyValuePair(字符串,字符串)列表。第一个字符串类似于class.property,第二个字符串是要分配给该class.property的值。

    我目前正在循环浏览这个列表,通过使用反射,我设置了每个值。

    这是可行的,但我的问题是有更快的方法吗?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Jon Skeet    15 年前

    如果重复使用同一属性(例如针对各种目标对象),则 build a delegate out of the setter 使用 Delegate.CreateDelegate 然后用这个。然而,只有当我分析了它并发现这是一个瓶颈时,我才会这样做。这与我的协议缓冲区实现有很大的不同,但这确实需要尽可能快,所以我很乐意应用一些微优化。

        2
  •  0
  •   driis    15 年前

    如果您需要多次在同一类型上设置相同的属性或属性,请缓存您的类型和propertyinfo。缓存非常容易,而且检查类型通常需要在反射场景中花费时间。

    如果您可以使用C 4来解决这个问题,那么您可能能够使用 dynamic . (我看到了.NET 3.5标签,只是想提一下)。