Adakah yang memulai proyek untuk melakukan IOC pada waktu kompilasi (mungkin menggunakan Roslyn atau Linq MethodInfo emit)?
Pengalaman saya dengan wadah IOC sejauh ini luar biasa, menunjukkan beberapa masalah kecil
- Banyak wadah IOC lambat untuk memulai, karena banyak logika resolusi terjadi di sini
- Seringkali sulit untuk memastikan bahwa resolusi dimungkinkan, karena kompilasi tidak lagi memastikan bahwa konstruktor dapat dipanggil
- Seringkali kontainer IOC menambahkan overhead kecil ke runtime (beberapa bahkan tidak kecil, seringkali yang start up dengan cepat berjalan lambat)
Tampaknya bagi saya bahwa solusi yang ideal adalah menambahkan langkah kompilasi ke rantai build yang menambahkan kelas Factory, bukan IOC.
Adakah yang pernah melakukan ini sebelumnya? Jika tidak, mengapa tidak?
Dagger untuk Java / Android melakukan itu. Ini mengorbankan beberapa sihir runtime (seperti Guice's) untuk menawarkan pengalaman codegen waktu kompilasi yang hampir sepenuhnya, termasuk mengubah sebagian besar kesalahan runtime menjadi kesalahan kompilasi.
Akan keren juga. NET.
sumber