Summary
In this chapter, we have learned about the power of having a managed runtime environment, seeing how we can take full advantage of it by dynamically creating code that will be executed in the same premises as pre-compiled code.
The possibilities are pretty much endless with such a power. It is super helpful as a way to automate tedious tasks and optimize the developer experience, but it can be used for so much more. For instance, if you have a system that dynamically connects to other systems and the types are dynamically created through configuration or similar, instead of going through untyped mechanisms such as the Dictionary<,> type to hold property values, an optimization would be to create types on the fly. The benefit is that you’d have something that was type-safe within the runtime. It could also prove to be a performance boost to your system, as you wouldn’t be looking up values from the dictionary.
In the next chapter, we will dive into...