如何从控制器获取统一配置中定义的统一容器?
How to get unity container defined in unity config from controller?
我正在尝试在 Mvc 应用程序中配置 Microsoft unity
我在unity.config中定义了统一配置:
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType<IAccessLogBLL, AccessLogBLL>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
我从 global.asax 调用该配置:
protected void Application_Start()
{
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
UnityConfig.RegisterComponents();
}
现在我已经在调用 resolve 方法之前从控制器定义了容器及其配置并且工作正常,但是我如何使用 unity.config 中定义的容器?
是否有任何 "getContainer" 方法或者我必须为统一容器声明全局变量?
private IAccessLogBLL _accessLogBLL;
public AccessLogController()
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IAccessLogBLL, AccessLogBLL>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
_accessLogBLL = container.Resolve<IAccessLogBLL>(new ParameterOverride("unitOfWork", UnitOfWork));
}
谢谢,抱歉我的英语不好
最后我将容器变量声明为 static,它工作正常。但我现在不认为这是最好的解决方案。
public static class UnityConfig
{
public static IUnityContainer container;
public static void RegisterComponents()
{
container = new UnityContainer();
container.RegisterType<IAccessLogBLL, AccessLogBLL>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
并形成我的控制器构造函数:
public AccessLogController()
{
_accessLogBLL = UnityConfig.container.Resolve<IAccessLogBLL>(new ParameterOverride("unitOfWork", UnitOfWork));
}
我正在尝试在 Mvc 应用程序中配置 Microsoft unity
我在unity.config中定义了统一配置:
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType<IAccessLogBLL, AccessLogBLL>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
我从 global.asax 调用该配置:
protected void Application_Start()
{
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
UnityConfig.RegisterComponents();
}
现在我已经在调用 resolve 方法之前从控制器定义了容器及其配置并且工作正常,但是我如何使用 unity.config 中定义的容器? 是否有任何 "getContainer" 方法或者我必须为统一容器声明全局变量?
private IAccessLogBLL _accessLogBLL;
public AccessLogController()
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IAccessLogBLL, AccessLogBLL>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
_accessLogBLL = container.Resolve<IAccessLogBLL>(new ParameterOverride("unitOfWork", UnitOfWork));
}
谢谢,抱歉我的英语不好
最后我将容器变量声明为 static,它工作正常。但我现在不认为这是最好的解决方案。
public static class UnityConfig
{
public static IUnityContainer container;
public static void RegisterComponents()
{
container = new UnityContainer();
container.RegisterType<IAccessLogBLL, AccessLogBLL>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
并形成我的控制器构造函数:
public AccessLogController()
{
_accessLogBLL = UnityConfig.container.Resolve<IAccessLogBLL>(new ParameterOverride("unitOfWork", UnitOfWork));
}