3 Stimmen

Wie erhält man die Assembly-Informationen einer importierten MEF-Funktion?

Ist es möglich, die Baugruppeninformationen aus einer importierten MEF-Funktion zu erhalten? Ich muss die Assembly-Version und den Namen des Plugin-Steuerelements kennen, das die Funktion enthält. Ich habe das Folgende versucht, aber es gibt nur die System.ComponentModel.Composition-Version zurück.

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);
}

Eine andere Alternative wäre die Verwendung von fest kodierten Werten in den Metadaten, aber ich dachte, dies wäre nicht wartbar. Man würde leicht vergessen, diese Werte zu ändern, wenn sich die Version ändert.

3voto

Reed Copsey Punkte 536986

Sie müssen den Typ in der func.Value , nicht die Lazy<T,TMeta> einpacken. Versuchen Sie es:

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

Beachten Sie jedoch, dass dadurch die Lazy<T> zu diesem Zeitpunkt - dies ist jedoch erforderlich, da das Objekt, für das Sie den Typ abfragen wollen, noch nicht konstruiert ist, bevor Sie es auswerten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X