I wrote this [Code Project article](http://www.codeproject.com/KB/WPF/SoapBoxCorePinBallDemo.aspx) about using MEF for extensibility in .NET. It's a good introduction. There are other extensibility frameworks for .NET, such as [SharpDevelop's Add-in Architecture](http://sharpdevelop.net/TechNotes/ProgramArchitecture.pdf), [Mono.Addins](http://www.mono-project.com/Mono.Addins) and [System.AddIn](http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/08/13/Build-AddIns-with-System-AddIn.aspx). The general pattern is this: - You define a contract (normally an interface) between the host and the extension - You need a discovery mechanism that goes out and looks for installed extensions - You need to be able to dynamically load the extensions and make the host aware of them In practice it shares a lot with Dependency Injection and the Strategy Pattern.