I’m a big fan of MEF (Managed Extensibility Framework). I think it is very easy to use and offers a lot of advantages when developing an application. MEF was developed to be a framework to allow for extensibility in your applications. Parts of Visual Studio (including the Entity Framework Designer) run on MEF as does the Extension Manager. That being said, it also works very well as a Dependency Injection container. My goal is not to compare MEF to other containers (ie. Unity, Windsor Castle, NInject, etc) but to show you how to use MEF as a DI container.
As usual, you can view/download the code on GitHub.
For Part 1 we will create a simple console application that will log a message. However, we will use MEF as a DI container to supply the ILogger implementation. Remember, this is meant to be a very simple example. It is definitely not meant to demonstrate how MEF should be used.