1
public class LogUtil : ILogUtility
{
   ... 
   public LogUtil(System.Type classType) 
   ....
}

从我背后的 WebForm1.aspx 页面代码,PageLoad 事件,我能够成功地执行以下操作..

LogUtil logger = new LogUtil(this.GetType());

但是,当我在页面加载事件中尝试从 WebForm1.aspx 执行以下代码时。

var container = new UnityContainer();
System.Type type = this.GetType();

container.RegisterType<ILogUtility, LogUtil>(new InjectionConstructor(this.GetType()));  <--Error

在上面的行中,我收到以下错误...

LogUtil 类型没有采用参数 (WebForm1) 的构造函数。

我究竟做错了什么?如何通过 InjectionConstructor 传入当前的类实例?为什么我能够成功地将 this.GetType() 直接传递给 LogUtil 构造函数,但我无法通过 InjectionConstructor 来完成?

4

2 回答 2

0

我可以通过更新我的类的构造函数签名来修复它,如下所示:

public class LogUtil : ILogUtility
{
   ... 
   public LogUtil(object classType)  
   ....
}
于 2012-04-12T17:27:26.577 回答
0

在您的 Logger 类上,您的类型是 Logger 类,因此它可以工作。它在 webform 上不起作用,因为 this.GetType() 正在返回类型 webform。

于 2012-04-12T16:26:12.007 回答