0

IDbContextインターフェイスが別のアセンブリおよび別のアセンブリのサービススタックにあり、ベースサービスクラスにはIDbContextのプロパティがあり、他のサービスではそのプロパティが使用されます。プロパティがAutofac経由で注入されない

単純にするには基本サービスクラスを省略します。このシナリオでも機能しません。ここ がIDbContextです:

public interface IDbContext 
{ 
} 

それから私はIDbContextを実装DBContextクラスがあります。別のアセンブリで 我々はIDContextプロパティを持っている。このクラスを持っている:

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

は、それから私は、インターフェイスにAutofacレジストリクラスはどのマップのクラスを持っているし、レジストリクラスは、これがどのメソッドの本体です別のアセンブリ にもありますタイプをマップ:私はコンストラクタのParam AutofacでIDbContextを入れた場合

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

は今、それを解決しますが、私はそれが自動的にプロパティとして注入することにしたいです。

+0

と変数名の競合があると思いますが、例外を得るのですか?または、プロパティ 'null'の値ですか? –

+0

プロパティの値はnullです –

+0

私はそれをテストしたし、正しく動作します。あなたは何かを提供するのを忘れましたか? – MaKCbIMKo

答えて

0

コンストラクタインジェクションを削除し、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

関連する問題