我是新使用Autofac和依赖注入,并已阅读了很多关于它。我收到一条错误消息:“'Autofac.Core.Activators.Reflection.DefaultConstructorFinder‘在'Evaluate.DivisionsController’类型上找到的任何构造函数都不能用可用的服务和参数调用:无法解析构造函数‘void.ctor(Evaluate.Services.DivisionService)’的参数'Evaluate.Services.DivisionService服务‘”。
我确信,我的问题在于用于配置的语法。
这是我在global.asax中的配置
//Autofac Configuration
var builder = new Autofac.ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
//builder.RegisterModule(new ServiceModule());
builder.RegisterModule(new EFModule());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));我的EFModule:
builder.RegisterType(typeof(ApplicationDbContext)).As(typeof(IApplicationDbContext)).InstancePerRequest();
builder.RegisterType<UserProvider>().As<IUserProvider>().InstancePerRequest();
builder.RegisterType<DivisionService>().As<IDivisionService>().InstancePerRequest();主计长:
private DivisionService _divisionService;
public DivisionsController(DivisionService service)
{
_divisionService = service;
}司处:
public class DivisionService : BaseService<Division>, IDivisionService
{
//private IApplicationDbContext _context;
public DivisionService(IApplicationDbContext context)
:base(context)
{
}ApplicationDBContext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IApplicationDbContext
{
private IUserProvider _user;
public ApplicationDbContext(IUserProvider user)
: base("DefaultConnection", throwIfV1Schema: false)
{
_user = user;
}用户提供程序类:
public class UserProvider : IUserProvider
{
public string GetApplicationUserName()
{
return HttpContext.Current.User.ToString();
}
}发布于 2017-11-01 17:11:03
我已经想明白了。IDivisionService不是从IBaseService继承的
https://stackoverflow.com/questions/47058968
复制相似问题