2017-02-11 53 views
-1

我在asp mvc中使用light inject。未解決的依賴[Class Service Layer]

在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:]

最新的問題是什麼?

回答

0

顯然你需要告訴Unity什麼是DA.Data.Domain.News的實現。

NewsService取決於News,它不能隱式解析(找不到,或者它本身有一些依賴關係)。

另外,您錯誤地在MVC中使用Unity。使用Unity for MVC NuGet。

+0

除了使用解除的方式有解決這個問題嗎? – Kianoush

+0

「除了解決這個問題之外,還有其他解決方法嗎?」 ... 什麼? –

+0

而不是另一種方式使用統一? – Kianoush

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(); 
+0

thanx但stiil告訴我那個錯誤 – Kianoush

+0

編輯你的問題併發布你現在得到的錯誤信息(作爲文本,而不是圖像)。 – NightOwl888

+0

我編輯問題 – Kianoush