1
ASP.NET 핵심 환경에서 Autofac 및 EF Core를 사용하고 있습니다.객체가 아닌 객체의 속성을 자동으로 주입
내 EF 컨텍스트 :
builder.RegisterType<MyContext>().As<IMyContext>().InstancePerLifetimeScope();
문제 : 당 요청 등록
public interface IMyContext { /* ... */ }
public class MyContext : DbContext, IMyContext { /* ... */ }
일부 수업 시간에, 내가 DbContext.ChangeTracker
이 필요합니다. 그러나 내가 가지고있는 것은 IMyContext
입니다.
인터페이스에 속성으로 추가하는 것을 원하지 않습니다. 소비자에게 너무 많은 힘을줍니다. 캡슐화를 없애는 ((DbContext)_context).ChangeTracker
을 캐스팅하지 않으려합니다.
그래서 생성자에 ChangeTracker
를 주입해야합니다 나는 the docs을 읽었습니다,하지만 그것을 등록하는 방법을 이해하지
public Foo(IMyContext context, ChangeTracker changeTracker)
{
_context = context;
_changeTracker = changeTracker;
}
.
(가) ChangeTracker
부터 같은 것이어야 주입하는 현재의 수명 범위의 MyContext
:
InstancePerLifetimeScope
로 람다을 레지스터의 과부하를 등록
_context.ChangeTracker.Equals(_changeTracker)
캐스트는 불행하지만 필요합니다. 고마워요 시릴. – grokky