TL;DR: Ig Anda malas, gunakan BsonSerializer.LookupSerializer
atau BsonMemberMap.GetSerializer
. Untuk melakukannya dengan benar , pastikan kode registrasi dipanggil sekali dan hanya sekali .
Pendekatan terbaik untuk menghindari ini adalah memastikan serializer terdaftar hanya sekali. Merupakan ide bagus untuk memiliki beberapa kode startup global yang mendaftarkan apa pun yang bersifat global ke aplikasi satu kali, dan hanya sekali. Itu termasuk hal-hal seperti konfigurasi injektor ketergantungan, alat-alat seperti automapper dan driver mongodb. Jika Anda memanggil kode ini hanya sekali dan dari satu titik dalam kode, Anda tidak perlu khawatir tentang keamanan utas, kunci mati, atau masalah serupa.
Pengaturan konfigurasi driver MongoDB adalah thread-safe, tetapi jangan berasumsi bahwa ini berlaku untuk semua paket perangkat lunak yang mungkin perlu Anda konfigurasi. Selain itu, penguncian bisa sangat mahal kinerja bijaksana jika kode Anda multi-utas, misalnya dalam aplikasi web. Last but not least, pencarian yang Anda lakukan mungkin tidak sepele, karena beberapa metode perlu berjalan di seluruh pohon warisan.