我在asp mvc中使用光注入。
在asp mvc中的global.asax中使用此代码。
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
var container = new ServiceContainer();
container.RegisterControllers();
container.RegisterControllers(typeof(Areas.Admin.AdminAreaRegistration).Assembly);
container.Register<INewsService, NewsService>(new PerScopeLifetime());
container.Register<ICategoryService, CategoryService>(new PerScopeLifetime());
container.EnableMvc();
}
并在控制器中:
private readonly INewsService _newsservice;
private readonly ICategoryService _categoryservice;
public AdminController(INewsService newsservice, ICategoryService categoryservice)
{
_newsservice = newsservice;
_categoryservice = categoryservice;
}
但是它显示了这个错误:
未解决的依赖项[目标类型:DA.Service.Service.NewsService],[参数:存储库(DA.Data.Repository.Repository
1[DA.Data.Domain.News])], [Requested dependency: ServiceType:DA.Data.Repository.Repository
1 [DA.Data.Domain.News],ServiceName:] < / p>
问题是什么?
答案 0 :(得分:0)
显然你需要告诉Unity DA.Data.Domain.News
的实现是什么。
NewsService
取决于News
,并且无法隐式解析(找不到,或者本身有一些依赖)。
另外,你错误地在MVC中使用Unity。使用Unity for MVC NuGet。
答案 1 :(得分:0)
该错误表明您的INewsService和ICategoryService都具有未在容器中注册的依赖项(存储库)。您需要注册整个对象图。我希望您的注册看起来像:
var container = new ServiceContainer();
container.RegisterControllers();
container.RegisterControllers(typeof(Areas.Admin.AdminAreaRegistration).Assembly);
container.Register<INewsService, NewsService>(new PerScopeLifetime());
container.Register<IRepository<News>, Repository<News>>(new PerRequestLifetime());
container.Register<ICategoryService, CategoryService>(new PerScopeLifetime());
container.Register<IRepository<Category>, Repository<Category>>(new PerRequestLifetime());
container.EnableMvc();