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

C# 我应该将PropertyInfo.SetProperty()转换为MethodInfos以执行吗,c#,.net,reflection,delegates,C#,.net,Reflection,Delegates,我只是在看书 我对属性集进行了多次反射调用,我想知道是否应该考虑将所有PropertyInfo.SetProperty()转换为MethodInfos调用,以便对其运行Delegate.CreateDelegate 最后,如果我这样做,我假设我需要基于对象类型存储每个MethodInfo或属性,即使属性名称和类型在多个类型中是相同的 仅供参考。我正在使用dotnet2 增加---- 我并不是在处理一个关键的性能问题本身,但有时会有足够的滞后,如果这能起到作用的话,解决这个问题也不是一个坏主意。此

我只是在看书 我对属性集进行了多次反射调用,我想知道是否应该考虑将所有PropertyInfo.SetProperty()转换为MethodInfos调用,以便对其运行Delegate.CreateDelegate

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

仅供参考。我正在使用dotnet2

增加----


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

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

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

这没有任何区别。成本在于从程序集检索元数据。无论是反映setter或getter的PropertyInfo还是MethodInfo都无关紧要。用System.Diagnostics.Stopwatch计时,让自己相信,证据就在布丁里。确保第一次使用时计时,因为缓存了元数据,所以使用后速度很快。

这本身不是一个严重的性能问题,但有时会有足够的延迟,因此处理这个问题不是一个坏主意。此外,我90%以上的反射调用都是在两个函数中进行的,因此微小的更改可能会产生巨大的影响。这可能很有用,但我使用的是dotnet 2,因此无法立即使用。但通过一些编辑…我实现了一个methodinfo缓存列表,并发现实际上时间几乎相同。我想我得去别处寻找性能提升。