-1

我在 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.Repository1[DA.Data.Domain.News],ServiceName:]

有什么问题 ?

4

2 回答 2

0

显然你需要告诉 Unity 的实现是什么DA.Data.Domain.News

NewsService依赖News并且它不能被隐式解析(要么没有找到,要么本身有一些依赖)。

此外,您在 MVC 中错误地使用了 Unity。使用 Unity for MVC NuGet。

于 2017-02-11T18:08:06.993 回答
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();
于 2017-02-11T18:16:51.703 回答