【发布时间】:2016-06-18 21:23:29
【问题描述】:
我正在开发 ASP.NET MVC 5 应用程序。我需要在控制器的构造函数中使用参数。 DefaultControllerFactory 无法解决它,我从它继承了我自己的 ControllerFactory:
public class ControllerFactoryProvider : DefaultControllerFactory
{
public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName)
{
string controllerType = string.Empty;
IController controller = null;
// Read Controller Class & Assembly Name from Web.Config
controllerType = ConfigurationManager.AppSettings[controllerName];
if (controllerType == null)
throw new ConfigurationErrorsException("Assembly not configured for controller " + controllerName);
// Create Controller Instance
IDataTransmitter _dataTransmitter = new DataTransmitter();
controller = Activator.CreateInstance(Type.GetType(controllerType), _dataTransmitter) as IController;
return controller;
}
public void ReleaseController(IController controller)
{
//This is a sample implementation
//If pooling is used to write code to return the object to pool
if (controller is IDisposable)
{
(controller as IDisposable).Dispose();
}
controller = null;
}
} 我在 Global.asax 中注册了它:
ControllerBuilder.Current.SetControllerFactory(新 ControllerFactoryProvider());
但是当我运行我的应用程序时,无论使用 DefaultControllerFactory 都没有看到带参数的构造函数。
哪里有错误?
【问题讨论】:
-
你到底想要什么?向控制器的构造函数添加参数?还是您打算在控制器的解析中执行一些其他类型的逻辑?
-
我只需要给控制器设置参数。
-
在这种情况下你不需要重写你的控制器工厂,你只需要插入你喜欢的依赖注入容器,我会在几个小时内发布答案。
标签: asp.net-mvc dependency-injection controller-factory