WindsorforIoCを使用して正常に動作していたアプリケーションがあります。Windsorによってインスタンス化されたコンポーネントに対して行われたすべての呼び出しのメソッド呼び出し、パラメーター、および実行時間をログに記録したいので、IInterceptorを実装するLoggingInterceptorを実装しました。
Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
invocation.Proceed(); // EXCEPTION IS THROWN HERE
sw.Stop();
Logger.Debug(.....
これで、以前は正常に機能していた操作で、次のメッセージが表示されたVerificationExceptionsがスローされます。
メソッドRepositories.RepositoryBase.GetAll:型引数'ET'は型パラメーター'ET'の制約に違反しています。
メソッドのシグネチャは次のとおりです。
public IList<ET> GetAll<ET>() where ET : EntityBase2, IEntity2
(EntityBase2とIEntity2はLLBLGenProからのものです)
メソッドの呼び出し元は次のとおりです。
public IList<ServerEntity> GetServers()
{
return GetRepository<IServerRepository>().GetAll<ServerEntity>();
}
(GetRepository <>()はServiceLocatorの単なるラッパーです)
城の構成からインターセプターをコメントアウトすると、すべて正常に動作します。
なぜこれが今起こっているのですか、そしてロギングインターセプターを使用できるようにするための修正がありますか?
ありがとう