1
私はしかし、私はそれらのいくつかが登録されていない場合場合のコントローラを解決するためのデフォルトの方法を使用する場合は、コントローラでコンストラクタ・インジェクションを処理するためのControllerFactoryの私の実装を持っている:それは作品Castle.Windsorからコンポーネントを解決する安全な方法はありますか?
public class WindsorControllerFactory : DefaultControllerFactory
{
private readonly IWindsorContainer _container;
public WindsorControllerFactory(IWindsorContainer container)
{
_container = container;
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType != null)
{
try
{
return _container.Resolve(controllerType) as IController;
}
catch(Exception ex)
{
return base.GetControllerInstance(requestContext, controllerType);
}
}
else
{
return base.GetControllerInstance(requestContext, controllerType);
}
}
}
が、私は本当に好きです
bool isRegistered;
var container = new WindsorContainer();
isRegistered = container.Kernel.HasComponent(typeof(IFoo));
Console.WriteLine(isRegistered);
container.Register(Component.For<IFoo>().ImplementedBy<Foo>());
isRegistered = container.Kernel.HasComponent(typeof(IFoo));
Console.WriteLine(isRegistered);
この出力:例外
一部のコントローラがコンテナに登録されないのはなぜですか? – Steven
それは間違っているかもしれませんが、コンテナのみのコントローラに、パラメータ化されたコンストラクタを登録する必要があります。 – kagetoki
これの利点は何でしょうか? – Steven