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:
  • Visual Studio for Applications (VSA) alias Script for .NET (Namensraum Microsoft.Vsa) – seit 1.1 und in .NET 2.0 schon wieder als "obsolete" gekennzeichnet
  • Managed Add-In Framework (MAF) (Namensraum System.AddIn) – seit .NET 3.5. Diese Biblio-thek ist weiterhin vorhanden, das in .NET 4.0 eingeführte MEF ist aber leichtgewichtiger und einfa-cher.

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
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