Xaq*_*ron 2 parameters import mef export
大多数时候我们无条件地进口出口.我想导入一些配置.这样的事情:
[Import(typeof(System.Configuration.Configuration))]
private Configuration config
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)
问题是在导出端我需要传递一个参数来获得正确的配置.这是导出的功能:
[Export(typeof(System.Configuration.Configuration))]
private Configuration GetConfig(String name)
{
// Load proper configuration and return it
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将参数从导入端传递给导出的函数.请注意,我在导入器的构造函数中使用导出函数(接受参数).
您可以做的是,使用Func<T, U>和MEF将为您处理代表.例如:
public class FirstClass
{
[Export("Method")]
public string Method(string arg)
{
return arg.ToUpperInvariant();
}
}
public class SecondClass
{
[Import("Method")]
public Func<string, string> Func;
}
Run Code Online (Sandbox Code Playgroud)
在该示例中,我正在导出命名合同,MEF将自动确定如何为我连接目标代理.我也可以Export编辑Func<string, string>.
所以在你的情况下,我会改变你Export的:
[Export("GetConfiguration")]
Run Code Online (Sandbox Code Playgroud)
而你Import和目标财产:
[Import("GetConfiguration")]
public Func<string, Configuration> GetConfig { get; set; }
Run Code Online (Sandbox Code Playgroud)
并且只需使用委托来执行导入的函数.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |