【转】Asp.net MVC 通过自定义ControllerFactory实现构造器注入(重写DefaultControllerFactory)

时间:2023-03-09 17:49:44
【转】Asp.net MVC 通过自定义ControllerFactory实现构造器注入(重写DefaultControllerFactory)

【转】Asp.net MVC 通过自定义ControllerFactory实现构造器注入

一、重写ControllerFactory的GetControllerInstance

ControllerFactory是asp.net中用于在运行时构造Controller的工厂 ,默认使用的工厂在构造Controller时,默认调用Controller的无参构造函数,所以要实现构造器注入,需要重写工厂中构造Controller的方法GetControllerInstance:

 public class CustomControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext,Type controllerType)
{
//获取构造函数对象
var constructor = controllerType.GetConstructors()[];
//获取构造函数参数
var param = constructor.GetParameters();
//获取构造函数所需的参数
var paramNames = param.Select(a => {
var serviceType = (ServiceAttribute)(a.ParameterType.GetCustomAttributes(typeof(ServiceAttribute), true)[]);
var t = Type.GetType(serviceType.ServiceName + ", " + serviceType.ServiceNameSpace, true);
return Activator.CreateInstance(t);
}).ToArray();
IController controller = Activator.CreateInstance(controllerType, paramNames) as Controller;
return controller;
}
}

在获取构造函数参数的时候,需要让发射机制寻找到服务的程序集,所以在这个地方我定义了一个名为Service的特性:

 public class ServiceAttribute : Attribute
{
private string _serviceName;
private string _serviceNamespace;
public ServiceAttribute(string serviceName, string serviceNamespace)
{
_serviceName = serviceName;
_serviceNamespace = serviceNamespace;
} public string ServiceName
{
get { return _serviceName; }
} public string ServiceNameSpace
{
get { return _serviceNamespace; }
}
}

二、定义服务接口:

 [Service(serviceName: "InjectController.Service.Impl.AddService", serviceNamespace: "InjectController.Service.Impl")]
public interface IAddService
{
int Add(int a, int b);
}

serviceName是服务的全称,serviceNamespace是服务的命名空间。

三、继承服务接口并实现:

     public class AddService:IAddService
{
public int Add(int a, int b)
{
return a + b;
}
}

四、在Controller中定义构造函数,引用服务接口

     public class HomeController : Controller
{
private ILoggerService _loggerService;
private IAddService _addService;
public HomeController(ILoggerService loggerService,IAddService addService)
{
_loggerService = loggerService;
_addService = addService;
} public ActionResult Index(int num1, int num2)
{
_loggerService.Logger(num1.ToString() + "+" + num2.ToString() + "=" + _addService.Add(num1,num2).ToString() + " " + "\r\n");
return View("Index", new LoggerDTO() { LoggerContent = _loggerService.GetLogger() });
}
}

ILoggerService没有在文章中列出,其格式与IAddService相同。

五、在Global.asax中重新注册控制器工厂,覆盖默认的构造器工厂:

     public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles); RegisterCustomControllerFactory();
} private void RegisterCustomControllerFactory()
{
IControllerFactory factory = new CustomControllerFactory();
ControllerBuilder.Current.SetControllerFactory(factory);
}
}

运行:发现接口成功的在构造函数中被注入

aaarticlea/png;base64,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" alt="" />

【转】Asp.net MVC 通过自定义ControllerFactory实现构造器注入(重写DefaultControllerFactory)