Biraz bağımlılık enjeksiyonunun doğrudan C # diline nasıl daha iyi entegre edilebileceğini düşünüyordum. Fikrinizi duymak istediğim potansiyel bir çözüm buldum. Çok fazla bağımlılık enjeksiyon çerçevesi kullanmadım, bu yüzden göz ardı ettiğim bir şey olabilir
Her neyse, fikir bir anahtar kelime kullanarak özellikleri "enjekte edilebilir" olarak ilan edebilmektir. Bir nesne başlatıldığında ve bu özellik yapıcı veya nesne başlatıcı aracılığıyla başlatılmadığında, bazı global hizmetlerden bu özellik türünün bir örneğini ister.
Benzer şekilde, enjekte edilen özellik türünü başlatabilmeniz için bu hizmete farklı türler için işleyiciler kaydedersiniz.
Bu tür IMO mimarisini kullanmanın tersi, oldukça esnek ve kullanımı kolay olmasıdır. Dezavantajı, enjeksiyonlu bir sınıfı her başlattığınızda singletona ek bilgi yapmanın bazı yükleri olabilir.
Daha sonra bu sadece yüksek performanslı bir çözümde sık sık başlatılan sınıflar için bir konudur, bu yüzden çok fazla sorun olmamalıdır. Belki de bu gibi durumlarda bir çeşit fabrika kullanabilirsiniz.
Düşünce, sorunlar, sorular, daha iyi fikirler?
kod
public class SomeClass
{
public SomeClass()
{
//implicit behavior if Animal is not set in constructor or initializer
this.Animal = GlobalInjector.Get(this,typeof(Mammal))
}
public injectable Mammal Animal
{
get;
set;
}
}
GlobalInjector.Register(typeof(Mammal), () => return new Mammal(someParameter));