使用 MEF 按命名空间解析导入
我使用 MEF 作为 IoC 容器。
如果请求类位于 Foo.UI.* 命名空间中,我希望 ILogger
解析为 ClientLogger
,否则它应该解析为 Logger
。我可以这样做吗?
I'm using MEF as an IoC container.
If the requesting class is in the Foo.UI.* namespace, I want ILogger
to resolve to ClientLogger
, otherwise it should resolve to Logger
. Can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许有这样的解决方法,使用命名导出?
Foo.UI.* 中的请求类型像这样装饰,
我知道这不是最好的解决方案,但也许它会起作用。
Maybe with such a workaround, using named exports ?
And the requesting type in the Foo.UI.* decorate like this
I know that it's not the best solution but maybe it would work.
Thomas 使用命名导出的解决方案可能是您可以使用 .NET 4 版本的 MEF 实现的最佳解决方案。在下一版本的 MEF 中,您可以通过 RegistrationBuilder 将 UI 命名空间中的任何 ILogger 导入更改为命名导入。 IE,有效地按照托马斯的建议进行,但按照惯例进行,而不是必须将其应用到每个类中。
您可以在 codeplex 上获取下一版本 MEF 的预览。
Thomas's solution using named exports is probably the best you can do with the .NET 4 version of MEF. With next version of MEF, you can probably use a convention via the RegistrationBuilder to change any ILogger imports in the UI namespace to be named imports. IE, effectively doing what Thomas suggested but doing it by convention instead of having to apply it to each of your classes.
A preview of the next version of MEF is available on codeplex.