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