首先,您可能想在您的项目Unity中再添加一个Unity引导程序。AspNet。Mvc公司
https://msdn.microsoft.com/en-us/library/dn507440(v=pandp.30).aspx
在ASP中使用PerRequestLifetimeManager类。NET Web API应用程序,您还必须为ASP添加Unity bootstrapper。NET MVC NuGet包到您的项目中。
团结一致Mvc和Unity。AspNet。WebApi将为DI注册控制器。
UnityConfig。反恐精英
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<INinjaContext, NinjaContext>(new PerRequestLifetimeManager());
container.RegisterType<INinjaRepository, NinjaRepository>(new PerRequestLifetimeManager());
}
UnityWebAPI激活器。反恐精英
取消对行的注释。。。
public static void Start()
{
// Use UnityHierarchicalDependencyResolver if you want to use
// a new child container for each IHttpController resolution.
var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.Container);
...
}
UnityMV激活器。反恐精英
取消对行的注释。。。
public static void Start()
{
...
// TODO: Uncomment if you want to use PerRequestLifetimeManager
Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
您的控制器
public class NinjasController : ApiController
{
private readonly INinjaRepository repository;
public NinjasController(INinjaRepository repository)
{
this.repository = repository;
}
public Ninja Get(int id)
{
var ninja = repository.GetNinjaById(id);
return ninja;
}
}
对于PerRequestLifetimeManager,Unity将在请求完成后负责处理。
我这里有一个例子
https://github.com/jasenhk/MovieStar
如果您正在使用
奥温
看见
Unity IoC does not inject dependency into Web API Controller