I can compile, get an instance and invoke a method of any C# type programmaticaly. There lots of info on that, including the StackOverflow (How can I evaluate a C# expression dynamically?). My problem is that I'm in the web environment and cannot save anything to /bin directory. I can compile "in-memory" as the above mentioned link suggests but then I won't be able to "unload" my custom assembly from the current AppDomain. After a while that will become a huge memory problem. Is it possible to open a new AppDomain, compile new assembly "in-memory", evaluate some expression or access some member of that assembly inside of that new AppDomain and kill that AppDomain safely when done, all that without saving anything to a hard drive? Thanks in advance for any links, suggestions, etc.
Have you taken a look at the DynamicMethod type in .Net? This type creates garbage collection enabled in memory methods using Reflection.Emit. This sounds like exactly what you're looking for.
Rick Strahl has a pretty good post on the subject here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With