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

WebForm1.aspxページコードビハインドのPageLoadイベントから、次のことを正常に実行できます。

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

しかし、WebForm1.aspxから次のコードを試行すると、pageloadイベントが発生します。

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

Loggerクラスでは、タイプはLoggerクラスであるため、機能します。this.GetType()がタイプwebformを返すため、Webフォームでは機能しません。

于 2012-04-12T16:26:12.007 に答える
0

次のようにクラスのコンストラクターシグネチャを更新することで修正できました。

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