Managed Extensibility Framework (MEF)

Eintrag zuletzt aktualisiert am: 07.05.2015


Generisches Dependency Injection Framework für Add-In-Programmierung
Namespace: System.ComponentModel.Composition
Alternative für Mono: Mono.Addins

Ab .NET 4.0, Open Source auch schon für .NET 3.5 (http://www.codeplex.com/MEF)
Auch für Silverlight

Es gab schon frühere Ansätze für Erweiterbarkeit in .NET:
MAF bietet gegenüber MEF allerdings den Vorteil, dass man in MAF die Erweiterungen besser von der Hauptanwendung isolieren kann. MAF-Erweiterungen können dafür in eigenen Application Domains laufen.

Details
Icontract
Klasse Contract
Client
  • Refenziert Icontract und System.ComponentModel.Composition
  • [Import] Icontract
  • Nachladen aus Katalog: Assembly-Katalog, Directory-Katalog, Type-Katalog, usw.
  • CompositionContainer
  • Im Standard werden Add-Ins in Default App Domain geladen

Optionen
Lazy<Icontract>: Instanzen erst beim Zugriff erzeugt
[ImportMany]: Mehrere Assemblies mit gleichem Typ laden
Add-Ins können Metadaten in Form von Attributen bereitstellen über das Add-In