属性 未通过 Autofac 注入

Property Does Not Get Injected Via Autofac

我在另一个程序集中有一个 IDbContext 接口,在另一个程序集中有一个服务堆栈,基本服务 Class 有一个 属性 的 IDbContext,其他服务确实使用它 属性。

为了简单起见,我省略了基本服务 Class 即使在这种情况下它也不起作用。 这是 IDbContext :

public interface IDbContext
{   
}

然后我有一个 DBContext Class 实现了 IDbContext。 在另一个程序集中,我们有这个 Class 它有一个 IDContext 属性 :

public class StudyFieldService : IStudyFieldService{
    private readonly IDbSet<StudyField> _studyFields;
    public IDbContext DbContext { get; set; }
    public StudyFieldService(IDbContext db)
    {
        _studyFields = DbContext.Set<StudyField>();
    }
}

然后我有 Autofac 注册表 Class 哪些映射 Class 到接口和注册表 Class 也在另一个程序集中 这是映射类型的方法的主体:

 var builder = new ContainerBuilder();
        builder.RegisterType<SalaryDbContext>().As<IDbContext>().InstancePerLifetimeScope();
        builder.RegisterType<StudyFieldService>().As<IStudyFieldService>().PropertiesAutowired();

现在,如果我将 IDbContext 放入构造函数参数中,Autofac 会解析它,但我希望它作为 属性 自动注入。

我认为您应该删除构造函数注入并将 DbContext 变量名称更改为其他名称或使用 this.DbContext 使其工作。

public class StudyFieldService : IStudyFieldService{
    private readonly IDbSet<StudyField> _studyFields;
    public IDbContext Context{ get; set; }
    public StudyFieldService()
    {
        _studyFields = Context.Set<StudyField>();
    }
}

我猜变量名与 ef DbContext 有冲突