暴露版本的MEF加载“插件”

时间:2009-09-23 08:49:29

标签: .net mef

为标题道歉,我被卡住了

我正在MEF池塘里舔我的脚趾。到现在为止还挺好。我有一个主机应用程序和几个导出东西的“插件”程序集。主机应用程序定义了一个名为DescriptionAttribute的属性,该属性继承自ExportAttribute并具有简单的Name属性。我的测试表单有<ImportMany> IEnumerable(Of Lazy(Of IDoStuff, IDescriptionAttribute))。这可以通过MEF很好地填充,我可以旋转整个集合,Name属性被填充,生命是金色的。 我稍后会把事情拆分成单独的程序集,此刻它只是一个概念验证

现在,问题是:我有没有办法通过我拥有的IDoStuff属性公开DescriptionAttribute实施,DescriptionAttribute穿着“插件”类的汇编版本?到目前为止,我将它传递给属性的构造函数的所有尝试都失败了,工作室一直告诉我需要一个常量表达式(可以理解)。我可以通过IDoStuff接口公开它,但将它作为DescriptionAttribute属性的一部分更好,而不是“感觉”更好。我也可以对它进行硬编码,但这是我在发布新版“插件”时忘记更新的另一个地方: - )

1 个答案:

答案 0 :(得分:1)

所以你有一堆实现IDoStuff的类实例,由MEF导入,你想知道每个类的汇编版本吗?

你能做到吗? GetType()将返回基础类的类型,对吗?不是typeof(IDoStuff)?

// IDoStuff myStuffDoer
var version = myStuffDoer.GetType().Assembly.GetName().Version;