TL;DR: Pokud jste líní, použijte BsonSerializer.LookupSerializer
nebo BsonMemberMap.GetSerializer
. Chcete-li to udělat správně , ujistěte se, že registrační kód je volán jednou a pouze jednou .
Nejlepším způsobem, jak se tomu vyhnout, je zajistit, aby byl serializátor registrován pouze jednou. Je dobré mít nějaký globální spouštěcí kód, který zaregistruje vše, co je globální pro aplikaci jednou a pouze jednou. To zahrnuje věci jako konfigurace závislostního injektoru, nástroje jako automapper a ovladač mongodb. Pokud tento kód zavoláte pouze jednou a z jednoho bodu v kódu, nemusíte si dělat starosti s bezpečností vláken, slepými zámky nebo podobnými problémy.
Nastavení konfigurace ovladače MongoDB jsou bezpečná pro vlákna, ale nepředpokládejte, že to platí pro všechny softwarové balíčky, které možná budete muset nakonfigurovat. Zamykání může být také velmi drahé z hlediska výkonu, pokud je váš kód vícevláknový, například ve webové aplikaci. V neposlední řadě, toto vyhledávání, které provádíte, nemusí být v první řadě triviální, protože některé metody potřebují projít celý strom dědičnosti.