crystal mef

10
Crystal MEF

Upload: phil-pursglove

Post on 06-May-2015

1.035 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Crystal MEF

Crystal MEF

Page 2: Crystal MEF

Software is Hard

• Components• Extensibility– IDTExtensibility2– ASP.NET Providers– System.AddIn

Page 3: Crystal MEF

Managed Extensibility Framework

• Released under .NET 4.0– System.ComponentModel.Composition

• Open source– http://mef.codeplex.com

• DEMOS

Page 4: Crystal MEF

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

Page 5: Crystal MEF

1. Parts

• A type annotated with MEF metadata

Page 6: Crystal MEF

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

Page 7: Crystal MEF

3. Import

• [Import(type)] on a property makes it consume a Partpublic class SomeClass

[Import(typeof(Ilogger))private Ilogger MyLogger()

• [ImportMany()] allows a part to import a collection (IEnumerable<T>) of parts

Page 8: Crystal MEF

4. Composition

• Parts are loaded through Catalogs– TypeCatalog• IEnumerable<types>• [types]

– AssemblyCatalog– DirectoryCatalog– Your custom implementation of a catalog e.g.

DatabaseCatalog, DownloadCatalog

Page 9: Crystal MEF

½. Recomposition

• Dynamic composition in response to a change in the number of available Parts

Page 10: Crystal MEF

MEF Help

• No book

• http://tinyurl.com/stackoverflowmef

• Twitter– @gblock– @kathleendollard– #MEF