如果 DefaultControllerFactory 已成为 ASP.NET Core 3 中的内部类,如何使用自定义工厂覆盖默认实现 IControllerFactory 并在正常情况下继续调用 DefaultControllerFactory?
services.AddSingleton<IControllerFactory, MyCustomControllerFactory>();
// this class for .NET core 2
public class MyCustomControllerFactory : DefaultControllerFactory
{
public override object CreateController(ControllerContext context)
{
//custom handling...
//base handling
return base.CreateController(context);
}
public override void ReleaseController(ControllerContext context, object controller)
{
base.ReleaseController(context, controller);
}
}
.NET 5 中的 DefaultControllerFactory 类是内部的,我不能调用它的 CreateController 方法来尝试在 ASP MVC Core 5 环境中注册常规控制器。
//this class for .NET core 3 or .NET 5
public class MyCustomControllerFactory : IControllerFactory
{
public object CreateController(ControllerContext context)
{
if(/*is custom case*/)
{
/*custom actions*/
return /*custom IController*/
}
return /*in this place I want calling base.CreateController(context)*/;
}
public void ReleaseController(ControllerContext context, object controller)
{
var disposable = controller as IDisposable;
if (disposable != null) { disposable.Dispose(); }
}
}