MEF catalogs


Directory Catalog
var container =     new CompositionContainer( 
            new DirectoryCatalog(Environment.CurrentDirectory));

Assembly Catalog
var catalog = new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly());

Aggregate Catalog
var catalog = new AggregateCatalog(
               new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()),
               new DirectoryCatalog(Environment.CurrentDirectory));

Type Catalog
   var catalog = new TypeCatalog(typeof(WebCache), typeof(AppFabricCache), typeof(MemCache));

Deployment Catalog -- for silverlight apps to find remote xaps (this may help reduce size of xap for client)
 
remember: for silverlight use, lighter version of System.ComponentModel.Composition ( version 2.0...or so)

MEF can reduce the need for third party Dependancy injectors and binders.

 

 

for layered application with loose coupling between different layers
Ex: presentation, business, and data access,
then you should consider using DI and IOC.  -- PRISM, UNITY,Ninject etc...

For building a scenario such as a logging, caching, and composition application,
and want to replace assemblies at runtime, consider using MEF.