Wrapping Up
MEF provides many more features in addition to those I've discussed here. Some interesting examples include the ability to load new implementations dynamically in real time, and the ability to reject implementations that are missing dependencies (this is called stable composition). All of these needs are satisfied with a framework that is part of the core .NET Framework. Just because Extension is MEF's "middle name," don't be fooled into thinking that it isn't useful unless you plan to accept plug-ins for your application. MEF is a very powerful tool that can fully satisfy most users' needs for inversion of control.