Frage

Ist es möglich, die Montage Informationen aus einer importierten MEF-Funktion bekommen? Ich brauche die Assemblierung-Version und den Namen der Plugin Steuerung kennen, die die Funktion enthält. Versucht, die folgenden, aber es gibt nur die System.ComponentModel.Composition Version.

foreach (Lazy<Func<int>, IMetadata> func in PluginFuncs)
{
    // get assembly information of the Plugin control for the imported function 
    string version = func.GetType().Assembly.GetName().Version.ToString();
    Console.WriteLine(version);
}

Ein andere Alternative wäre, fest einprogrammierte Werte in den Metadaten zu verwenden, aber ich dachte, das nicht wartbar sein würde. Es wäre leicht, zu vergessen, diese Werte zu ändern, wenn die Version geändert.

War es hilfreich?

Lösung

Sie müssen die Art von innen func.Value zu prüfen, nicht der Lazy<T,TMeta> Verpackung es. Versuchen Sie:

Func<int> lambdaFunc = func.Value;
Delegate del = lambdaFunc;
string version = del.Method.ReflectedType.Assembly.GetName().Version.ToString();

Allerdings erkennt, dass dies die Lazy<T> an dieser Stelle bewerten wird -. Aber dies erforderlich ist, weil das Objekt, in dem Sie die Art zu erhalten versuchen, nicht gebaut werden, bis Sie dieses auswerten

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