2011-06-01 81 views

回答

2

也许有这样的解决方法,使用命名的出口?

[Export("clientLogger", typeof(ILogger))] 
public class ClientLogger : ILogger {} 

[Export("logger", typeof(ILogger))] 
public class logger: ILogger {} 

而且在Foo.UI.请求类型*装点这样

[ImportingConstructor] 
public MyService([Import("clientLogger", typeof(ILogger))]ILogger logger) 

我知道这是不是最好的解决办法,但也许它会工作。

+0

这似乎很合理 – kenwarner 2011-06-01 15:55:04

1

托马斯的使用命名导出的解决方案可能是您可以用.NET 4版本的MEF做的最好的解决方案。使用MEF的下一个版本,您可以通过RegistrationBuilder使用约定来更改UI命名空间中任何名为imports的ILogger导入。 IE,实际上是做托马斯建议的,但是按照惯例做,而不是必须将它应用到你的每个类。

下一版MEF的预览请见codeplex

+0

丹尼尔,很高兴知道:)期待下一个版本:) – 2011-06-01 20:52:48