asp.net スペースで MVC を学習しています。コントローラー ctor にパラメーターを渡したい場合は、MVC フレームワークに登録するコントローラー ファクトリを作成できるようです。以下のような例を見て、コントローラーが作成されたときに MVC フレームワークがこのファクトリを使用することをどのように認識しているのか疑問に思う必要があります。
public class CustomControllerFactory : IControllerFactory
{
public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName)
{
ILogger logger = new DefaultLogger();
var controller = new HomeController(logger);
return controller;
}
public System.Web.SessionState.SessionStateBehavior GetControllerSessionBehavior(
System.Web.Routing.RequestContext requestContext, string controllerName)
{
return SessionStateBehavior.Default;
}
public void ReleaseController(IController controller)
{
IDisposable disposable = controller as IDisposable;
if (disposable != null)
disposable.Dispose();
}
}
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
RegisterCustomControllerFactory ();
}
}
private void RegisterCustomControllerFactory ()
{
IControllerFactory factory = new CustomControllerFactory();
ControllerBuilder.Current.SetControllerFactory(factory);
}
したがって、このコントローラー ファクトリは HomeController のインスタンスを作成し、特定の Logger オブジェクトを渡します。このカスタム コントローラ ファクトリを登録したため、デフォルトのコントローラ ファクトリはこのアプリケーションで使用されなくなりましたか? 現在2つの工場がありますか?他のすべてのコントローラーのデフォルトであり、この特定のコントローラーは HomeController のみですか? その場合、MVC はどのコントローラー ファクトリを使用するかをどのように認識しますか? アプリケーションでは、すべて異なるパラメーター タイプを使用する多くのコントローラーが必要ですが、それはどのように機能しますか?
この特定の質問をグーグルで検索しようとしましたが、実際には何も見つかりませんでした。人々が使用するフレームワークの束を見つけたばかりですが、その特定の部分を理解したいと思っています。ありがとう!