语境:
我在整个解决方案中使用 Enterprise Library 6 和 Unity 3 来管理横切关注点,并作为管理依赖注入的轻量级容器。我需要开发自定义跟踪侦听器。我需要将依赖项注入到该自定义跟踪侦听器中。
此功能在 Enterprise Library 5 和 Unity 2 中可用。以下链接提供了一个很好的示例来说明如何实现它(我自己的要求与链接中概述的几乎相似):
Unity / EntLib:将依赖项注入 CustomTraceListener
但是,在 Enterprise Library 6 中,这似乎不是一个简单的迁移,原因如下:
Ent Lib 6 TraceListenerData 类不再提供针对以下内容的覆盖:
GetCreationExpression()
...方法。在 Ent Lib 6 中,新功能提供在:
CoreBuildTraceListener()
...方法。我的理解是 Ent Lib 5GetCreationExpression()
允许将“标记”放置在返回的表达式中,当 Unity Container 被解析时可以替换该表达式。newCoreBuildTraceListener()
返回 Trace Listener 的新实例。
此外,企业库不再使用 Unity 容器来解析实例。这:
EnterpriseLibraryCoreExtension
...已被删除。新方法将类似于以下内容:
container.RegisterInstance(logWriterFactory.Create());
然而,对我来说,这意味着 CoreBuildTraceListener() 被调用(在 logWriterFactory.Create() 上),然后才能通过 Unity 容器进行任何调用来解析接口。
问题):
使用 Enterprise Library 6 和 Unity 3,是否可以:
一个。在正确的时间获取方法中的 Unity 容器CoreBuildTraceListener()
- 这样我就可以在创建自定义跟踪侦听器时找到需要注入自定义跟踪侦听器的适当接口,或者...
湾。是否有一种新方法可以实现我不知道的相同最终目标(如果可能,请您提供一个简单的示例?)或...
C。这个功能退化了吗?