TL;DR: Jeśli jesteś leniwy, użyj BsonSerializer.LookupSerializer
lub BsonMemberMap.GetSerializer
. Aby zrobić to dobrze , upewnij się, że kod rejestracyjny jest wywoływany tylko raz .
Najlepszym sposobem uniknięcia tego jest upewnienie się, że serializator jest zarejestrowany tylko raz. Dobrym pomysłem jest posiadanie globalnego kodu startowego, który rejestruje wszystko, co jest globalne dla aplikacji, raz i tylko raz. Obejmuje to takie rzeczy jak konfiguracja wtryskiwacza zależności, narzędzia takie jak automapper i sterownik mongodb. Jeśli wywołasz ten kod tylko raz i z jednego punktu w kodzie, nie musisz się martwić o bezpieczeństwo wątków, martwe zamki lub podobne problemy.
Ustawienia konfiguracyjne sterownika MongoDB są bezpieczne dla wątków, ale nie należy zakładać, że dotyczy to wszystkich pakietów oprogramowania, które mogą być konieczne do skonfigurowania. Ponadto blokowanie może być bardzo drogie pod względem wydajności, jeśli Twój kod jest wielowątkowy, na przykład w aplikacji internetowej. Wreszcie, wyszukiwanie, które wykonujesz, może nie być trywialne, ponieważ niektóre metody wymagają przechodzenia przez całe drzewo dziedziczenia.