4. Think of the task
Declare Export
Declare Import
Compose Both together
5. [System.ComponentModel.Composition.ExportAttribute]
[Export]
public class Plugin1{...}
[Export(typeof(Plugin2))]
public class Plugin2 {...}
[Export(“MitaTeknik.Plugin")]
public class Plugin3 {...}
[Export(typeof(IPlugin))]
public class Plugin4: IPlugin{…}
6. [System.ComponentModel.Composition.ImportAttribute]
[Import]
public Plugin1 Plugin {get ;set; }
[Import(typeof(Plugin2))]
public Plugin2 Plugin2 {get ;set; }}
[Import(“MitaTeknik.Plugin")]
public Plugin3 Plugin {get ;set; }
[Import(typeof(IPlugin))]
public IPlugin Plugin4 {get ;set; }
7. [System.ComponentModel.Composition.Hosting.AssemblyCatalog]
var catalog = new AssemblyCatalog(“Assembly”);
var catalog = new DirectoryCatalog(“Extensions");
var catalog = new AggregateCatalog(
new AssemblyCatalog(“Assembly”),
new DirectoryCatalog("Extensions"));
var container = new CompositionContainer(catalog);
var batch = new CompositionBatch();
batch.AddPart( this );
container.Compose(batch);