Reflection uses general-purpose code and metadata to perform its actions. The Reflection call usually does a lot of runtime checking, for example, if the property that you want to access really refers to the type of object you provided. Or that the parameters that you want to pass to the method are compatible with the signature. And, of course, a lot of boxing and unboxing, because everything is simply seen as an object.
On the other hand, reflection emits generates code specifically for the task that you want to perform, checks many things only once at compile time and then runs as fast as every code you wrote in the source code.
, , , , . . , , , , , , .
, , , emit () .