使用C#和Autofac的构造函数注入模式

使用C#和Autofac的构造函数注入模式,c#,dependency-injection,repository-pattern,C#,Dependency Injection,Repository Pattern,我对DI模式有点陌生,手头有一些问题。 整个故事是这样的: 有一个名为“DataGenerator”的控制台应用程序负责生成 整个应用程序的示例数据。已将对“Autofac”的引用添加到此项目中。以下是用于创建国家/地区列表的代码片段: 在上述foreach循环中出现的异常表示: {“未找到具有'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'的构造函数” 论类型 “TechnicalTest.Service.AppS

我对DI模式有点陌生,手头有一些问题。 整个故事是这样的:

  • 有一个名为“DataGenerator”的控制台应用程序负责生成 整个应用程序的示例数据。已将对“Autofac”的引用添加到此项目中。以下是用于创建国家/地区列表的代码片段:

在上述foreach循环中出现的异常表示:

{“未找到具有'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'的构造函数” 论类型 “TechnicalTest.Service.AppServices.CountryService”可以使用可用的服务和参数调用:\r\n无法解析参数 构造函数“Void”的“TechnicalTest.Repository.EntityRepositories.ICONTRYRepository countryRepository”无效 .ctor(TechnicalTest.Repository.EntityRepositories.icontrepository,TechnicalTest.Repository.UnitOfWork.IUnitOfWork)“}

  • 还有一个项目包括应用服务。以下是其中之一:

请注意,添加了GenericRepository和UnitOfWork项目以介绍每个实体存储库。例如:

我已经在网上搜索了这个异常,以及如何处理它,但不幸的是,我没有找到一个解决我的问题的方法。我猜CountryService构造函数或类似的东西一定出了问题。
如果您有任何帮助或想法,我们将不胜感激。

您是否已在容器中注册了
DbContext
?从错误消息看,问题似乎是解决了
CountryRepository
的依赖关系


在容器中注册的类的所有依赖项都必须在容器中注册。容器如何创建CountryRepository的实例而不需要它所需的所有依赖项?

您是否已向容器注册了
DbContext
?从错误消息看,问题似乎在于解决
CountryRepository
的依赖关系,这就是问题所在。@JackHughes:很抱歉,我发布的主类的代码缺少一行代码
builder.RegisterType().As()。使用服务或
DbContext
是否也应该注册?容器中注册的类的所有依赖项都必须注册到容器中。容器如何创建CountryRepository的实例而不需要它所需的所有依赖项呢。。。我应该这么做,看看会发生什么happens@JackHughes字体非常感谢。。现在它工作得很好,我对此很满意。。还有一个问题:为了注册
DbContext
,我参考了我的
Model
项目,其中编写了
DbContext
DbSet
。您认为这种参考在设计和架构方面是否合适?我想这听起来还不错,因为我不知道还有什么别的办法。。