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