如何通过向 MEF 中的导出器传递参数来导入零件?
大多数时候我们无条件进口或出口。 我想导入一些配置。像这样的事情:
[Import(typeof(System.Configuration.Configuration))]
private Configuration config
{
get;
set;
}
问题是在导出端,我需要传递一个参数才能获得正确的配置。这是导出的函数:
[Export(typeof(System.Configuration.Configuration))]
private Configuration GetConfig(String name)
{
// Load proper configuration and return it
}
我的问题是如何将参数从导入端传递到导出的函数。请注意,我在导入器的构造函数中使用导出函数(接受参数)。
Most of the time we import an export unconditionally.
I want to import some configurations. something like this:
[Import(typeof(System.Configuration.Configuration))]
private Configuration config
{
get;
set;
}
The problem is at export side I need to pass a parameter to get the right configuration. Here is the exported function:
[Export(typeof(System.Configuration.Configuration))]
private Configuration GetConfig(String name)
{
// Load proper configuration and return it
}
My question is how to pass a parameter from import side, to the exported function. Note that I use exported function (which accept a parameter) inside the constructor of my importer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以做的是使用
Func
并且 MEF 将为您处理委托。例如:在该示例中,我正在导出一个命名合约,MEF 将自动确定如何为我连接目标委托。我也可以将
Export
编辑为Func
。因此,在您的情况下,我会将您的
Export
更改为:将您的
Import
和目标属性更改为:并且只需使用委托来执行导入的函数。
希望有帮助。
What you can do, is use
Func<T, U>
and MEF will handle the delegate for you. For instance:In that example, I'm exporting a named contract and MEF will automatically determine how to wire up the target delegate for me. I could have
Export
ed asFunc<string, string>
also.So in your case, I would change your
Export
to:And your
Import
and target property to:And the simply use the delegate to execute the imported function.
Hope that helps.