未解析的依赖关系 [类服务层]



>i 在 ASP MVC 中使用 Light Inject .

在 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], [参数: Repository(DA.Data.Repository.Repository 1[DA.Data.Domain.News])], [Requested dependency: ServiceType:DA.Data.Repository.Repository 1[DA.Data.Domain.News], ServiceName:]

问题出在哪里?

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

NewsService取决于News,并且无法隐式解析(找不到,或者本身有一些依赖项(。

此外,您在 MVC 中使用 Unity 时也错误。使用 Unity for MVC NuGet。

该错误指出您的 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();

相关内容

  • 没有找到相关文章

最新更新