Frage

Ich möchte dynamisch das MEF Export-Attribut auf einen Typ zur Laufzeit gelten, genau so, wie wenn der Typ ein Export-Attribut bei der Kompilierung angewendet hatte.

Gibt es eine einfache Möglichkeit, dies zu tun?

Abgesehen davon, es ist ein komplexer Weg, dies zu tun?

War es hilfreich?

Lösung

Wenn Sie sich leisten können .NET 4.5 (Windows XP-Unterstützung, die Mittel fallen) zu verwenden, haben Sie jetzt Attribut lose Anmeldung aka Convention Modell .

In .NET4 oder früher MEF Vorversionen dies nicht unterstützt wird aus der Box, aber MEF kann immer noch durch die Erstellung Ihrer eigenen Implementierungen von ExportProvider oder ComposablePartCatalog .

Die MEF Contrib Fluent Definition Provider ist eine solche Implementierung, die Sie registrieren Importe und Exporte von Methodenaufrufen erlaubt.

Die MEF Contrib Konfigurierbare Definition r Geben ist eine andere, die Sie den Import-Export in einer XML-Datei einzurichten ermöglicht.

Eine weitere Option ist die Registrierung mit Autofac und dann Gebrauch zu machen seine MEF Integration die Autofac Komponenten zur Verfügung zu MEF machen.

Andere Tipps

Ich bin nicht 100% sicher, aber ich denke nicht, dass möglich ist, mit MEF zu tun. Ein Muster verwenden ein ähnliches Verhalten zu schaffen, obwohl das Werk / provider Muster.

interface IData {} 

interface IDataProvider {
  IData Data { get; set; }
}

[Export(IDataProvider)]
class DataProvider : IDataProvider {
  public IData { get; set; }
}

Sie können dieses Muster verwenden dynamisch die Implementierung von IData auf den Wert zu aktualisieren, die Sie verwenden möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top