Ent Lib 6 / Unity 3:将依赖项注入CustomTraceListener

时间:2013-10-08 17:44:02

标签: .net unity-container enterprise-library ioc-container

背景:

我在整个解决方案中使用Enterprise Library 6和Unity 3来管理横切关注点,并作为管理依赖注入的轻量级容器。我需要开发自定义跟踪侦听器。我需要在自定义跟踪侦听器中注入一个依赖项。

此功能在Enterprise Library 5和Unity 2中可用。以下链接提供了如何实现它的一个很好的示例(我自己的要求几乎与链接中列出的要求类似):

Unity / EntLib: Injecting a dependency into a CustomTraceListener

但是,由于以下原因,似乎它不是企业库6中的直接迁移:

Ent Lib 6 TraceListenerData类不再提供对:

的覆盖

GetCreationExpression()

...方法。在Ent Lib 6中,新功能在:

中提供

CoreBuildTraceListener()

...方法。我的理解是,Ent Lib 5 GetCreationExpression()允许'标记'被放置在返回的表达式中,当Unity容器被解析时可以替换它。新的CoreBuildTraceListener()返回Trace Listener的新实例。

此外,Enterprise Library不再使用Unity容器来解析实例。的:

EnterpriseLibraryCoreExtension

...已被删除。新方法将有以下几点:

container.RegisterInstance(logWriterFactory.Create());

但是,对我来说,这意味着在调用通过Unity容器解析接口之前,会调用CoreBuildTraceListener()(在logWriterFactory.Create()上)。

问题(S):

使用Enterprise Library 6和Unity 3,是否可以:

一个。在正确的时间在CoreBuildTraceListener()方法中获取Unity容器 - 所以我可以在创建自定义跟踪侦听器时找到我需要注入自定义跟踪侦听器的相应接口或...

湾是否有一种新的方法来实现我不知道的相同的最终目标(如果可能的话,请你提供一个简单的例子吗?)或......

℃。此功能是否已退化?

1 个答案:

答案 0 :(得分:1)

解决。可以参考以下链接找到有关该主题的更多信息:

https://unity.codeplex.com/discussions/461536