Saya telah berpikir sedikit tentang bagaimana injeksi ketergantungan dapat lebih baik diintegrasikan secara langsung ke dalam bahasa seperti C #. Saya telah menemukan solusi potensial yang ingin saya dengar pendapat Anda. Saya belum pernah menggunakan banyak kerangka kerja injeksi ketergantungan sehingga mungkin ada sesuatu yang saya abaikan
Bagaimanapun, idenya adalah untuk dapat mendeklarasikan properti sebagai "dapat disuntikkan" menggunakan kata kunci. Ketika sebuah objek dipakai, dan properti itu tidak diinisialisasi melalui konstruktor, atau penginisialisasi objek, ia meminta instance dari tipe properti itu dari beberapa layanan global.
Demikian pula Anda mendaftarkan penangan untuk jenis yang berbeda ke layanan itu sehingga Anda dapat instantiate jenis properti yang diinjeksi.
Keuntungan menggunakan jenis arsitektur IMO ini adalah ia cukup fleksibel dan mudah digunakan. The downside adalah bahwa mungkin ada beberapa overhead melakukan panggilan ke singleton setiap kali Anda memulai kelas yang memiliki suntikan.
Kemudian lagi itu hanya masalah untuk kelas yang sering dipakai dalam solusi kinerja tinggi sehingga seharusnya tidak menjadi masalah. Mungkin Anda bisa menggunakan semacam pabrik dalam hal itu.
Pikiran, masalah, pertanyaan, ide yang lebih baik?
Kode
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));