Should I convert PropertyInfo.SetProperty() into MethodInfos for execution
I was just reading How costly is .NET reflection? I do numerous reflection calls for property sets and was wondering if I should be looking at converting all of my PropertyInfo.SetProperty() into MethodInfos calls so that I can run Delegate.CreateDelegate against.
Finally if I do this, I assume that I need to store each MethodInfo or the Property based on the object Type even if the Property name and Type are the same across multiple Types
fyi. I am using dotnet 2
Added ----
I am not dealing with a critical performance problem per se, but there are sometimes enough of a lag that working on this is not a bad idea if it will make a difference. Furthe开发者_JS百科rmore, 90%+ of my reflection calls occur with 2 functions so small changes there could have huge impact throughout the app.
It doesn't make any difference. The cost is in retrieving the metadata from the assembly. Whether it is a PropertyInfo or the MethodInfo that reflects the setter or getter is immaterial. Time this with System.Diagnostics.Stopwatch to convince yourself, the proof is in the pudding. Make sure you time the first use, it is fast after that thanks to the metadata getting cached.
As John said, you're the best person to answer that question. Make a quick test in LINQPad using both methods and see if your usage justifies the optimization. But perhaps a better optimization (if it makes sense in your situation) would be to try to convert your reflection into expression trees.
If you don't have a performance problem, then don't solve a performance problem.
精彩评论