How create High Performance .NET classes using reflection?
.net, c#, reflection
Solution
1 million a day is not a lot; I'd just use `Activator.CreateInstance` (a quick test using `Activator.CreatInstance(Type)` shows that on my lowly laptop it can create 1M objects from a`Type` in ~2s).
Thoughts on creating objects quickly:
- use generics and the `: new()` constraint (zero effort)
- use `DynamicMethod` and write the IL (not hard)
An implementation of the `new` approach (without needing the `: new()` constraint externally) is shown here: `ObjectFactory.cs`.
For an IL example, see dapper-dot-net and `il.Emit(OpCodes.Newobj, ...)`
Problem
Ok, so we all know Reflecttion is many time less performant than "newing" a class instance, and in many cases this is just fine depending on the application requirements. QUESTION: How can we create high performance .NET classes using a late binding (Reflection) strategy. I have an existing requirement that demands class instances be created using reflection (CreateInstance), but performance is critical. In my situation I am creating instances for every incoming SMS Message in our application. During production this could easily be over a million per day. I would like to hear and share some ideas on how to create .NET classes without directly referencing the classes in code, for example using Reflection. I was also thinking if there is a way to somehow cache a class Factory that can improve the "Creation" time