0
我使用MEF(从的NuGet System.Composition)+ Common.Logging和具有调用ILog的类,例如,如何履行System.Composition MEF ImportingConstructor用一个实例
[Export(typeof(ITranslator))]
public class ATranslator : BaseTranslator
{
[ImportingConstructor]
public ATranslator(ILog log)
{
...
}
记录器实例可以从Common.Logging通过log = LogManager.GetLogger<ITranslator>();
获得,但是如何将其插入到我的合成容器中?
var container = new ContainerConfiguration()
.WithAssembly(typeof(ITranslator).Assembly)
.CreateContainer();
container.SatisfyImports(this);
让我可以
[ImportMany]
private IEnumerable<ITranslator> Translators { get; set; }
没有
System.Composition.Hosting.CompositionFailedException:没有出口被 发现合同 '的ILog' - 通过进口所需>“日志'部分'ITranslator []' - >需要通过合同的初始请求'IEnumerable {IsImportMan y = True}'
这是一个有趣的想法。但我如何使用LogExporter? – tofutim
即使您对LogExporter什么都不做,我认为它会起作用,它只是一个导出属性的虚拟类。你可以试试吗? – YuvShap
我刚试过,它看起来像它的工作,虽然我不明白如何。 :) – tofutim