Genel olarak, uygulamanızın etrafına bir IoC konteyneri geçirmenin ve bunu bir servis konumlandırıcı gibi kullanmak kötü bir uygulamadır.Castle Windsor'da konteyneri geçmeden kapsamlı bir yaşam tarzı kullanmak mümkün mü?
Kapsayıcıyı yalnızca benim uygulamamın birleşik kökünde kullanmayı tercih ediyorum ve tek bir çağrımı Resolve() - uygulamasındaki en üst düzey nesneyi çözme ve bağımlıları alt sınıflara bağımlılıkları enjekte etmek için kapsayıcıda yanıtlama tercih ediyorum nesne grafiği.
Kale Windsor yakın zamanda bir "using" bloğu içinde container.BeginScope() öğesini çağırabileceğiniz kapsamlı bir yaşam tarzı ekledi. Bu "kullanma" bloğundan, kapsamlı bir yaşam tarzıyla kaydedilmiş bir bileşenin çözümlenmesi, "kullanım" bloğu boyunca her defasında aynı örneği döndürecektir.
container.Register(Component.For<A>().LifestyleScoped());
using (container.BeginScope())
{
var a1 = container.Resolve<A>();
var a2 = container.Resolve<A>();
Assert.AreSame(a1, a2);
}
Soru: BeginScope() kabın üzerine bir uzantısı yöntemi olduğunu göz önüne alındığında, bir kapsamlı yaşam tarzı Gerçekten' hangi (konteyner etrafında geçirilen sürece bir uygulamada nasıl kullanılabileceğini görmek için başarısız yapmak istiyorum). Kapsamlı yaşam tarzının nerede ve nasıl kullanılabileceği konusunda herhangi bir örneği var mı?
sayesinde
Tom
Kapsamlı yaşam tarzını nasıl ve neden kullanmayı planlıyorsunuz? –
Merhaba Krzystof, Kapsamlı yaşam tarzını henüz kullanma planım yok. İleride kullanmak istediğimde kapsamlı yaşam tarzının nasıl doğru kullanılabileceğine dair birkaç örnek görmek istedim. Fabrikalarda kullanmak mantıklı bir yaklaşım gibi görünüyor. –
Bu, ihtiyacım olana benzer gibi görünüyor, aynı kapsamda olan nesnelerin yapıcıları bağımlılıkları olarak kapsamları çözemedim: http://stackoverflow.com/questions/25064516/dependency-injection-lifestyle- –