我过去使用过很多不同的DI容器,但从未使用过 Unity(特别是Unity 4.0.1)。
我正在使用一个.NET MVC具有典型三层架构的普通旧应用程序。Repository -> Domain -> WebUI。
我需要知道我做错了什么,以便我可以让我注册的依赖项在域层上工作。这是我的global.asax.
protected void Application_Start()
{
// ...
IUnityContainer container = new UnityContainer();
RegisterDependencies(container);
DependencyResolver.SetResolver(new WebApplicationDependencyResolver(container));
}
protected void RegisterDependencies(IUnityContainer container)
{
container.RegisterType<IUnitOfWork, UnitOfWork>();
}
这是WebApplicationDependencyResolver上面使用的:
namespace WebApplication1.Infrastructure
{
public class WebApplicationDependencyResolver : IDependencyResolver
{
private IUnityContainer _container;
public WebApplicationDependencyResolver(IUnityContainer container)
{
_container = container;
}
public object GetService(Type serviceType)
{
try
{
return _container.Resolve(serviceType);
}
catch (Exception)
{
return null;
}
}
public IEnumerable<object> GetServices(Type serviceType)
{
try
{
return _container.ResolveAll(serviceType);
}
catch (Exception)
{
return null;
}
}
}
}
我的Domain Layer类CustomerService.cs(我在它自己的项目和主项目的文件夹中使用):
namespace WebApplication1.Services
{
public class CustomerService
{
private readonly IUnitOfWork _uow;
public CustomerService(IUnitOfWork uow)
{
_uow = uow;
}
}
}
现在,当我尝试CustomerService像这样调用控制器中的类时,它不起作用:
public ActionResult Index()
{
var service = new CustomerService();
return View();
}
谁能指导我正确的方向,开始DI在域层上工作?
ABOUTYOU
相关分类