안녕하세요, 이것은 나에게 잘못되었습니다. 이것이 설계된 방식입니까?왜 autofac은 일회용으로 두 번 처분합니까?
내 일회용 클래스 :
class C : IDisposable
{
public void Dispose()
{
Console.WriteLine("Disposing C");
}
}
등록 :
cb.RegisterInstance(new C());
사용법 :
using (IContainer container = BuildContainer())
{
var c = container.Resolve<C>();
Console.WriteLine("C resolved");
}
출력 :
C resolved
Disposing C
Disposing C
,
동일한 객체에서 Dispose를 여러 번 호출하는 것은 좋지 않을 것이라고 생각합니다.
참고 :이
cb.Register(c => new C());
같은 클래스를 등록 할 때 그것은 단지 한 번에 배치됩니다. 차이점은 무엇입니까?
몇 개의 C 인스턴스가 있습니까? WriteLine을 생성자 안에 넣을 수도 있습니다. –
필자는 Autofaq에 익숙하지 않지만 인스턴스를 등록하는 것과 공장을 등록하는 것 사이에 차이가있는 것처럼 보입니다. 첫 번째 예에서 Autofaq가 등록 된 "구성 요소"를 처분하는 방식으로 인해 인스턴스가 두 번 배치 될 수 있습니다. Autofaq 컨테이너 자체가있을 때 등록 된 "서비스"또는 해결 자 (이 경우 인스턴스 자체)를 삭제하는 Autofaq로 인해 처분됩니다. 폐기. –
인스턴스가 하나뿐입니다. – Kugel