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