C# customTraceListener的统一解决方案?

C# customTraceListener的统一解决方案?,c#,unity-container,C#,Unity Container,我有一个自定义跟踪侦听器,带有一个简单的构造函数 public MyTraceListener(ISomething something) { _something = something; } 这通过web.config中的system.diagnostics连接到我的web应用程序。。然而,它似乎从来没有点燃过这个。我如何团结一致来解决这个问题?我是否需要以某种方式编辑我的web.config?如果我添加了一个触发的默认构造函数,那么正确的方法是让默认构造函数对自身进行某种解析吗?您是否在

我有一个自定义跟踪侦听器,带有一个简单的构造函数

public MyTraceListener(ISomething something)
{
_something = something;
}

这通过web.config中的system.diagnostics连接到我的web应用程序。。然而,它似乎从来没有点燃过这个。我如何团结一致来解决这个问题?我是否需要以某种方式编辑我的web.config?如果我添加了一个触发的默认构造函数,那么正确的方法是让默认构造函数对自身进行某种解析吗?

您是否在代码或web.config中向Unity注册了ISomething

差不多

var container = new UnityContainer().RegisterType<ISomething, Something>();
var container=new UnityContainer().RegisterType();
或通过如上所述的配置文件

你打电话给Unity来解决你的自定义TraceListener吗

var myTraceListener = container.Resolve<MyTraceListener>();
var myTraceListener=container.Resolve();

或者,您是否将侦听器注入到其他应该使用它的类中,以便Unity将侦听器解析为一个参数?

不幸的是,您有点卡住了。跟踪系统没有给您接管对象创建的机会,因此Unity没有机会进行构造函数注入。系统将重新启动跟踪侦听器


最好将依赖项设置为属性,而不是构造函数依赖项,然后在创建跟踪侦听器对象后捕获该对象,并在其上调用container.build以注入属性。

这就是诀窍。。我无法真正调用mytracelistener上的resolve——它是在应用程序中进行第一次跟踪调用时由TraceUtil类创建的。。