DI kullanarak bir nesnenin nasıl yönetileceğini merak ediyorum. BenTek kullanımlık sınıfları yönetme Bağımlılık Enjeksiyon
class Foo : IFoo, IDisposable
{
// ...
}
O zaman bu sınıfın başka bir sınıftan enjekte edilen bir sınıf var varsayalım
class Bar
{
public Bar(IFoo foo)
{
this.Foo = foo
}
IFoo Foo { get; set; }
}
Sonra (benim örnek MVC ve Ninject kullanır)
this.Bind<IFoo>().To<Foo>().InRequestScope();
Bazı kapsamında bu bağlama Merak ediyorum, Bağımlılık Enjeksiyon çerçevesi Foo
'un yaşam döngüsünü ele aldığından, Bar
numaralı telefondan kimliğini uygulamalı mıyım? Benim düşüncem DI Foo
yaşam döngüsü yönetiyor, bu yüzden başka bir sınıf Foo
kullanıyorsa, ona dokunmayın. tek kullanımlık obje yapıcı parametre olarak Bar
geçirilir beri Ayrıca, Bar
değil wrap tek kullanımlık obje yapar, bu yüzden Bar
ait arayan çöp toplanır Foo
Bar
sonra kullanmak istediği bilmiyor. Bu doğru mu?
Nicholas Blumhardt'ın bu konuyla ilgili bir açıklaması var. Örneğin, Autofact örneğidir ancak genel olarak http://nblumhardt.com/2011/01/an-autofac-lifetime-primer/ – fsimonazzi
Bazı MSDN makalelerine bakıldığında, Microsoft'un her ikisini de yapacağını düşünüyor: http://msdn.microsoft.com/en-us/library/yhfzs7at%28v=vs.110%29 (StremReader) "StreamReader nesnesi, StreamReader öğesi sağlanan Stream nesnesinde Dispose() öğesini çağırır .Dispose " ama http://msdn.microsoft.com/en-us/library/z7ha67kw%28v=vs.110%29 (Bitmap)" Bitmap'in ömrü boyunca akışı açık tutmalısınız. " – Michael