DI를 사용하여 개체를 관리하는 방법을 알고 싶습니다. 제가일회용 클래스 관리 Dependency Injection
class Foo : IFoo, IDisposable
{
// ...
}
다음이 클래스가 다른 클래스로 주입되는 클래스가 있다고 가정
class Bar
{
public Bar(IFoo foo)
{
this.Foo = foo
}
IFoo Foo { get; set; }
}
는 그럼 (내 예 MVC 및 Ninject에 사용)
this.Bind<IFoo>().To<Foo>().InRequestScope();
I 스코프이 바인딩 Dependency Injection 프레임 워크가 Foo
의 수명주기를 처리하기 때문에에 IDispoable을 구현해야합니까? 내 생각에 DI는 Foo
의 수명주기를 관리하므로 다른 클래스가 Foo
을 사용하는 경우이를 만지지 마십시오. 일회용 객체가 생성자 매개 변수로 Bar
로 전달되기 때문에, Bar
하지 랩 일회용 객체를 않습니다, 그래서 Bar
의 호출자가 쓰레기 수집 Foo
Bar
후 사용하고자하는 방법을 알고하지 않습니다. 이게 옳은 거니?
Nicholas Blumhardt는 Autofact를 예로 들었지만 일반적으로 적용 할 수있는 훌륭한 주제가 있습니다. http://nblumhardt.com/2011/01/an-autofac-lifetime-primer/ – fsimonazzi
일부 MSDN 기사를 보면, Microsoft는 두 가지를 모두 수행합니다 : http://msdn.microsoft.com/en-us/library/yhfzs7at%28v=vs.110%29 (StremReader) "StreamReader 개체는 제공된 Stream 개체에서 Dispose()를 호출합니다. StreamReader .Dispose는 " "이라고하지만 http://msdn.microsoft.com/en-us/library/z7ha67kw%28v=vs.110%29 (비트 맵) "비트 맵의 수명 동안 스트림을 열어 두어야합니다. " – Michael