属性 未通过 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 有冲突
我在另一个程序集中有一个 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 有冲突