TL;DR: Als je lui bent, gebruik dan BsonSerializer.LookupSerializer
of BsonMemberMap.GetSerializer
. Om het goed te doen , zorg ervoor dat de registratiecode één keer wordt aangeroepen .
De beste manier om dit te voorkomen, is ervoor te zorgen dat de serializer slechts één keer wordt geregistreerd. Het is een goed idee om een globale opstartcode te hebben die alles wat globaal is voor de toepassing één keer en slechts één keer registreert. Dat omvat zaken als de configuratie van de afhankelijkheidsinjector, tools zoals automapper en de mongodb-driver. Als je deze code maar één keer en vanaf één punt in de code aanroept, hoef je je geen zorgen te maken over threadveiligheid, deadlocks of soortgelijke problemen.
De configuratie-instellingen van het MongoDB-stuurprogramma zijn thread-safe, maar ga er niet vanuit dat dit geldt voor alle softwarepakketten die u mogelijk moet configureren. Vergrendelen kan ook erg duur zijn qua prestaties als uw code multi-threaded is, bijvoorbeeld in een webapplicatie. Last but not least, die zoekopdracht die u doet, is misschien niet triviaal, omdat sommige methoden een hele overervingsboom moeten doorlopen.