【发布时间】:2016-10-08 06:51:49
【问题描述】:
我正在使用 MEF(来自 nuget 的 System.Composition)+ Common.Logging 并且有调用 ILog 的类,例如,
[Export(typeof(ITranslator))]
public class ATranslator : BaseTranslator
{
[ImportingConstructor]
public ATranslator(ILog log)
{
...
}
记录器实例可通过 log = LogManager.GetLogger<ITranslator>(); 从 Common.Logging 获得,但如何将其插入到我的组合容器中?
var container = new ContainerConfiguration()
.WithAssembly(typeof(ITranslator).Assembly)
.CreateContainer();
container.SatisfyImports(this);
这样我就可以
[ImportMany]
private IEnumerable<ITranslator> Translators { get; set; }
没有
System.Composition.Hosting.CompositionFailedException:没有导出 为合同“ILog”找到 -> 零件的导入“日志”需要 'ATranslator' -> 部分 'ITranslator[]' 的导入 'item' 需要 -> 合同 'IEnumerable { IsImportMany = True }' 的初始请求所必需的
【问题讨论】:
标签: c# mef composition