2
저장소에서 나는 응용 프로그램의 수명 내내 살아있는 몇 가지 인스턴스를 유지하지만 때로는 새로운 인스턴스를 container.GetInstance 생성자 오버라이드에 전달하는 경우에도 다른 인스턴스와 LightInject로 해당 인스턴스를 즉시 대체해야합니다. 여기 생성자에 전달 된 새 인스턴스를 사용하여 LightInject에 이미 등록 된 유형을 재정의하는 방법은 무엇입니까?
은 조각은 문제를 보여주고있다 :internal class ClassA
{
public string Name { get; private set; }
public ClassA(string name)
{
Name = name;
}
public override string ToString()
{
return Name;
}
}
internal class ClassB
{
public ClassA A { get; private set; }
public ClassB(ClassA a)
{
A = a;
}
public override string ToString()
{
return string.Format("I contain {0}", A);
}
}
private void TestContainer()
{
var container = new LightInject.ServiceContainer();
var a1 = new ClassA("A instance 1");
container.Register(x => a1);
container.Register<ClassB>();
var a2 = new ClassA("A instance 2");
var bwitha1 = container.GetInstance<ClassB>();
if(bwitha1.A != a1)
{
throw new InvalidOperationException("This will not happen");
}
var bwitha2 = container.GetInstance<ClassA, ClassB>(a2);
if(bwitha2.A != a2)
{
throw new InvalidOperationException("Something went wrong here");
}
}
왜의 getInstance 호출에 명시 적 인스턴스를 제공하는 경우 LightInject 이전에 등록 된 인스턴스가 우선합니다? 문제를 해결하고 인수 중 하나의 대체 인스턴스로 객체를 생성하는 방법은 무엇입니까?