나는 두 개의 인터페이스 ILogger
과 ILogger<T>
을 가지고 있습니다. 후자는 이전의 것을 상속합니다.일반 객체를 비 제네릭 매개 변수로 사용하는 Autofac
public class Handler
{
public Handler(ILogger logger)
{
}
}
를 내가 해결하고 ILogger<T>
대신의 ILogger
에 전달하는 Autofac
에게 싶습니다 그리고 어떤 클래스 Handler
좋아. ILogger
과 ILogger<T>
의 인스턴스를 모두 해결할 수 있다고 가정합니다. 여기서는 문제가되지 않습니다.
은 내가 수행하여 인스턴스를 전달할 수 알고
builder.RegisterType<Handler>()
.AsSelf() // assume any other suplerfluos config is also done
.WithParameter(...);
3 오버로드하지만 그들 중 3 (적어도 내 Autofac
의 버전에) 어떻게 든 매개 변수로 인스턴스를 사용하여이 의미한다. 이 작업을 수행하는 몇 가지 방법이 있나요 .WithParameter(typeOf(ILogger<Handler>))
:
내가 좋아하는 뭔가를 원하십니까?
런타임시 어떻게 작동합니까? 당신은 확실히 이렇게 컴파일 할 수있는 것을 쓸 수 없었습니다. 왜 런타임이 다르게 동작 할 것이라고 기대합니까? –
'Handler' 인스턴스를 수동으로 생성한다면'var handler = new Handler (new DefaultLogger()); '를 쓸 수 있습니다. 내가 Handler를 요청할 때마다 Autofac이 나를 위해 그것을 할 수있는 방법이 있다고 생각했습니다. –
Luiso
'ILogger'를'DefaultLogger()'에 매핑하는 것이 어떨까요? 아니면'Handler2'에 주입 될 필요가있는'ILogger'에 대해'DefaultLogger ()'이 될까요? –