我有一个自定义跟踪侦听器,带有一个简单的构造函数;
public MyTraceListener(ISomething something)
{
_something = something;
}
这是通过web.config中的system.diagnostics连接到我的网络应用程序。但是,它似乎永远不会解雇这个。如何让团结来解决这个问题?我需要以某种方式编辑我的web.config吗?如果我添加一个触发的默认构造函数,那么正确的方法是让默认构造函数对它自己做某种解析吗?
答案 0 :(得分:1)
不幸的是,你有点卡住了。跟踪系统没有为您提供接管对象创建的机会,因此Unity没有机会进行构造函数注入。系统将新建跟踪侦听器。
您可以做的最好的事情是将依赖项设置为属性,而不是构造函数依赖项,然后在创建跟踪侦听器对象之后获取它,并在其上调用container.BuildUp以获取注入的属性。
答案 1 :(得分:0)
您是否在代码或web.config中注册了ISomething with Unity?
像
这样的东西var container = new UnityContainer().RegisterType<ISomething, Something>();
或通过配置文件描述[here]
您是否致电Unity解析自定义TraceListener?
var myTraceListener = container.Resolve<MyTraceListener>();
或者您是否将侦听器注入应该使用的其他类中,以便Unity将侦听器作为参数解析?