CodeGo.net>如何获取导入的MEF功能的汇编信息?
作者:互联网
是否可以从导入的MEF函数获取装配信息?我需要知道程序集的版本和包含该功能的插件控件的名称.尝试了以下操作,但它仅返回System.ComponentModel.Composition版本.
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);
}
另一种选择是在元数据中使用硬编码的值,但我认为这将不可维护.当版本更改时,忘记更改这些值很容易.
解决方法:
您需要从func.Value中检查类型,而不是Lazy< Teta>包装它.尝试:
Func<int> lambdaFunc = func.Value;
Delegate del = lambdaFunc;
string version = del.Method.ReflectedType.Assembly.GetName().Version.ToString();
然而,意识到这将评估Lazy T值.在这一点上-但这是必需的,因为要评估类型的对象直到构造完之后才构造.
标签:mef,net-assembly,c 来源: https://codeday.me/bug/20191209/2096374.html