は、私は私の城ウィンザーコンテナの正しい私のバインディングを取得して少し苦労しています。元の問題はlog4netと名前付きロガーに関係しており、その説明はSetting the name of a log4net loggerです。はどのようdependerの種類を得るのですか?
しかし、問題は今、これに絞られます。
私はIAuditorを実装するクラスのLog4NetAuditorを持っています。私のクラスの中には、抽象クラスAuditableComponentを拡張しています。このクラスには、IAuditor型のAuditorというプロパティを持っています。私が城を持っているIAuditorをregigateするとき、それはAuditableComponentを拡張するすべてのクラスに対してAuditorを解決して設定する方法を知っています。
は今、私は、Typeパラメータを取るためにLog4NetAuditorのコンストラクタを必要とします。この型は、AuditableComponentを拡張するクラスの型でなければなりません。私は、これはファクトリメソッドを通じて実現することを試みたが、私はそれを動作することはできません:私はこの問題で私自身が盲目見つめてる
container.Register(Component.For<IAuditor>().ImplementedBy<Log4NetAuditor>()
.UsingFactoryMethod(RegisterAuditor).LifeStyle.Transient);
private static IAuditor RegisterAuditor(IKernel kernel, ComponentModel model, CreationContext context)
{
Type loggerType = //magic to find correct type happens here
return new Log4NetAuditor(loggerType, kernel.Resolve<ILoggerFactory>());
}
。誰も助けることができますか?
はい、私はインターセプタを認識してんだけど、彼らは唯一の仮想メソッドでは動作し、特にとして、私の要求に答えを提供していません。しかし、提案をありがとう。 –