Perangkat lunak kami memiliki beberapa kelas yang harus ditemukan secara dinamis melalui refleksi. Kelas-kelas semua memiliki konstruktor dengan tanda tangan tertentu di mana kode refleksi instantiate objek.
Namun, ketika seseorang memeriksa apakah metode ini dirujuk (misalnya melalui Visual Code Code Lens), referensi melalui refleksi tidak dihitung. Orang-orang dapat kehilangan referensi mereka dan menghapus (atau mengubah) metode yang tampaknya tidak digunakan.
Bagaimana seharusnya kita menandai / mendokumentasikan metode yang dimaksudkan untuk dipanggil melalui refleksi?
Idealnya, metode ini harus ditandai sedemikian rupa sehingga kolega dan Visual Studio / Roslyn dan alat otomatis lainnya 'melihat' bahwa metode ini dimaksudkan untuk dipanggil melalui refleksi.
Saya tahu dua opsi yang bisa kita gunakan tetapi keduanya tidak cukup memuaskan. Karena Visual Studio tidak dapat menemukan referensi:
- Gunakan Atribut khusus dan tandai konstruktor dengan atribut ini.
- Masalahnya adalah bahwa atribut Atribut tidak dapat menjadi referensi metode, oleh karena itu konstruktor masih akan menunjukkan memiliki 0 referensi.
- Kolega yang tidak terbiasa dengan atribut khusus mungkin akan mengabaikannya.
- Keuntungan dari pendekatan saya saat ini adalah bagian refleksi dapat menggunakan atribut untuk menemukan konstruktor yang harus dipanggil.
- Gunakan komentar untuk mendokumentasikan bahwa metode / konstruktor dimaksudkan untuk dipanggil melalui refleksi.
- Alat otomatis mengabaikan komentar (dan rekan mungkin juga melakukannya).
- Komentar Dokumentasi Xml dapat digunakan untuk meminta Visual Studio menghitung referensi tambahan ke metode / konstruktor:
BiarkanMyPlugin
kelas yang konstruktornya dipanggil melalui refleksi. Asumsikan kode refleksi yang dicari mencari konstruktor yang mengambilint
parameter. Dokumentasi berikut membuat lensa kode menunjukkan konstruktor yang memiliki 1 referensi:
/// <see cref="MyPlugin.MyPlugin(int)"/> is invoked via reflection
Pilihan mana yang lebih baik?
Apa praktik terbaik untuk menandai metode / konstruktor yang dimaksudkan untuk dipanggil melalui refleksi?