Should I convert PropertyInfo.SetProperty() into MethodInfos for execution

I was just reading http://stackoverflow.com/questions/25458/how-costly-is-reflection-really 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. Furthermore, 90%+ of my reflection calls occur with 2 functions so small changes there could have huge impact throughout the app.

Answers


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.


Need Your Help

How to use Google API to Query Index folders using Python

python google-search-api

I am new to programming and currently learning Python. I wanted your help to figure if there is a way to query/traverse/search inside index folder returned by a Google query using Python.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.