Return 使用 Unity 的服务实例 (Class)
Return instance of Service(Class) using Unity
目前我有 class Factory
已经实现了 return 管理服务实例的方法(一些 class)
public static class Factory
{
//#region UserNewEditDelete
public static IUserBM UserCreation()
{
return new UserBM();
}
//#endregion
}
使用 Unity Framework 重写此 class Factory
的正确方法是什么?
我的愿景::
我的工厂:
public static class Factory
{
public static void Register(IUnityContainer container)
{
container.RegisterType<IUserBM, UserBM>();
}
}
在Global.asax注册:
Factory.Register(UnityConfig.GetConfiguredContainer());
当我需要使用管理服务时:
UnityConfig.Container.Resolve<IUserBM>()
实施得好吗?谢谢。
统一容器的创建:
var unityContainer = new UnityContainer();
unityContainer.RegisterType<IUserBM, UserBM>();
需要实例时的用法:
var userBm = unityContainer.Resolve<IUserBM>();
Unity 足够聪明,可以在需要时注入该类型,例如:
public class A
{
private IUserBM userBm;
public A(IUserBM userBm)
{
this.userBm = userBm;
}
public void DoSomething()
{
this.userBm.Work();
}
}
// this will construct an instance of class A injecting required types
var a = unityContainer.Resolve<A>();
a.DoSomething();
Unity 与 ASP.NET MVC
安装 nuget package Unity.Mvc 后,从 UnityConfig.cs
编辑方法 RegisterTypes
public static void RegisterTypes(IUnityContainer container)
{
unityContainer.RegisterType<IUserBM, UserBM>();
}
现在,如果您需要控制器中的 IUserBm
实例,请添加构造函数参数:
public class HomeController : Controller
{
private IUserBm userBm;
public HomeController(IUserBm userBm)
{
this.userBm = userBm;
}
...
由于 UnityDependencyResolver
安装包时自动设置,Unity 将为您创建控制器,提供已注册类型的实例。
有关详细信息,请参阅 ASP.NET MVC 4 Dependency Injection
目前我有 class Factory
已经实现了 return 管理服务实例的方法(一些 class)
public static class Factory
{
//#region UserNewEditDelete
public static IUserBM UserCreation()
{
return new UserBM();
}
//#endregion
}
使用 Unity Framework 重写此 class Factory
的正确方法是什么?
我的愿景::
我的工厂:
public static class Factory
{
public static void Register(IUnityContainer container)
{
container.RegisterType<IUserBM, UserBM>();
}
}
在Global.asax注册:
Factory.Register(UnityConfig.GetConfiguredContainer());
当我需要使用管理服务时:
UnityConfig.Container.Resolve<IUserBM>()
实施得好吗?谢谢。
统一容器的创建:
var unityContainer = new UnityContainer();
unityContainer.RegisterType<IUserBM, UserBM>();
需要实例时的用法:
var userBm = unityContainer.Resolve<IUserBM>();
Unity 足够聪明,可以在需要时注入该类型,例如:
public class A
{
private IUserBM userBm;
public A(IUserBM userBm)
{
this.userBm = userBm;
}
public void DoSomething()
{
this.userBm.Work();
}
}
// this will construct an instance of class A injecting required types
var a = unityContainer.Resolve<A>();
a.DoSomething();
Unity 与 ASP.NET MVC
安装 nuget package Unity.Mvc 后,从 UnityConfig.cs
RegisterTypes
public static void RegisterTypes(IUnityContainer container)
{
unityContainer.RegisterType<IUserBM, UserBM>();
}
现在,如果您需要控制器中的 IUserBm
实例,请添加构造函数参数:
public class HomeController : Controller
{
private IUserBm userBm;
public HomeController(IUserBm userBm)
{
this.userBm = userBm;
}
...
由于 UnityDependencyResolver
安装包时自动设置,Unity 将为您创建控制器,提供已注册类型的实例。
有关详细信息,请参阅 ASP.NET MVC 4 Dependency Injection