I’m interested in creating a desktop application composed of modules such that the source code to those modules is embedded in the application itself, allowing the user to edit the application as they are running it and have the updated modules put into use without restarting the application. Can anyone suggest a good architecture for this?
I’m looking to use Microsoft.Net and C# for this. DLR is not an option.
Thanks!
It’s not easy to suggest a good architecture for this in a short posting.
At first, i’d define a contract (an Interface) every module the user writes/modifies must implement. It should contain at least an Execute method.
Then I’d create a Wrapper-Class for these modules which:
Then I’d have some kind of shell which contains a collection of all the module-wrappers. Any wrapper that sucessfully compiled would then let the Shell call the Execute method of the module interface.
When it comes to compiling and executing code on the fly, this link should provide all the information you need:
http://www.west-wind.com/presentations/dynamicCode/DynamicCode.htm