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

我是否应该将propertyinfo.setproperty()转换为methodinfos以便执行

  •  1
  • JDMX  · 技术社区  · 15 年前

    我只是在看书 How costly is .NET reflection? 我对属性集进行了多次反射调用,想知道是否应该考虑将我的所有propertyinfo.setProperty()转换为methodInfos调用,以便可以对其运行delegate.createDelegate。

    最后,如果我这样做,我假设我需要根据对象类型存储每个methodinfo或属性,即使属性名称和类型在多个类型中相同

    FYI。我正在使用dotnet 2

    增加----

    我并没有处理一个关键的性能问题本身,但有时有足够的滞后,工作在这不是一个坏主意,如果它将产生影响。此外,我90%以上的反射调用都是使用两个函数进行的,因此小的更改可能会对整个应用程序产生巨大的影响。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Hans Passant    15 年前

    这没什么区别。代价是从程序集检索元数据。无论是propertyinfo还是methodinfo反映setter或getter都是无关紧要的。用system.diagnostics.stopwatch计时,让自己相信,证据就在布丁里。确保您第一次使用时,它是很快的,因为元数据得到缓存。

        2
  •  1
  •   Josh    15 年前

    正如约翰所说,你是回答那个问题的最佳人选。使用这两种方法在linqpad中进行快速测试,看看您的使用是否证明了优化的合理性。但也许一个更好的优化(如果在你的情况下有意义的话)是尝试将你的反射转换成 expression trees

        3
  •  0
  •   John Saunders    15 年前

    如果没有性能问题,就不要解决性能问题。