我应该将PropertyInfo.SetProperty()转换为MethodInfos以便执行

时间:2010-02-27 22:32:30

标签: c# .net reflection delegates

我刚读How costly is .NET reflection? 我对属性集进行了大量的反射调用,并且想知道我是否应该将所有PropertyInfo.SetProperty()转换为MethodInfos调用,以便我可以运行Delegate.CreateDelegate。

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

FYI。我正在使用dotnet 2

添加----

我本身并没有处理严重的性能问题,但有时会有足够的延迟,如果它会产生影响,那么处理这个问题并不是一个坏主意。此外,90%以上的反射调用都是使用2个函数进行的,因此可以在整个应用程序中产生巨大的影响。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

它没有任何区别。成本是从程序集中检索元数据。无论是PropertyInfo还是反映setter或getter的MethodInfo都是无关紧要的。通过System.Diagnostics.Stopwatch来说服自己,证明就在布丁中。确保您第一次使用时间,之后很快就会因为缓存了元数据而停止。

答案 2 :(得分:0)

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