The document discusses the Managed Extensibility Framework (MEF), which allows applications to be extended through extensions called "parts." MEF allows parts to define what they export via attributes like [Export] and what they import via attributes like [Import]. It also describes how parts are composed together through catalogs that provide available parts to satisfy imports. The key concepts are parts, exports that make parts available, imports that parts require, and composition that matches imports and exports.
2. Software is Hard
Components
Extensibility
IDTExtensibility2
ASP.NET Providers
System.AddIn
3. Managed Extensibility Framework
Released under .NET 4.0
System.ComponentModel.Composition
Open source
http://mef.codeplex.com
DEMOS
4. 4(遜) Key Concepts
Parts
A component that does something
Export
Parts that are available to be consumed
Import
Parts that a program consumes
Composition
The process by which Imports and Exports are
mated together
6. 2. Export
[Export] on a class exposes it as a Part
[Export]
public class Logger()
[Export(type)] can expose a specific type e.g.
an interface
[Export(typeof(ILogger)
public class Logger :Ilogger
[Export(string)] can expose a named
contract
7. 3. Import
[Import(type)] on a property makes it
consume a Part
public class SomeClass
[Import(typeof(Ilogger))
private Ilogger MyLogger()
[ImportMany()] allows a part to import a
collection (IEnumerable<T>) of parts
8. 4. Composition
Parts are loaded through Catalogs
TypeCatalog
IEnumerable<types>
[types]
AssemblyCatalog
DirectoryCatalog
Your custom implementation of a catalog e.g.
DatabaseCatalog, DownloadCatalog