TL;DR: Wenn Sie faul sind, verwenden Sie BsonSerializer.LookupSerializer
oder BsonMemberMap.GetSerializer
. Um es richtig zu machen , stellen Sie sicher, dass der Registrierungscode nur einmal aufgerufen wird .
Der beste Ansatz, dies zu vermeiden, besteht darin, sicherzustellen, dass der Serializer nur einmal registriert wird. Es ist eine gute Idee, einen globalen Startcode zu haben, der alles, was global für die Anwendung ist, einmal und nur einmal registriert. Dazu gehören Dinge wie die Konfiguration des Abhängigkeitsinjektors, Tools wie Automapper und der Mongodb-Treiber. Wenn Sie diesen Code nur einmal und von einem einzigen Punkt im Code aufrufen, müssen Sie sich keine Gedanken über Thread-Sicherheit, Deadlocks oder ähnliche Probleme machen.
Die Konfigurationseinstellungen des MongoDB-Treibers sind Thread-sicher, aber gehen Sie nicht davon aus, dass dies für alle Softwarepakete gilt, die Sie möglicherweise konfigurieren müssen. Außerdem kann das Sperren sehr teuer sein leistungsmäßig, wenn Ihr Code Multithreading ist, beispielsweise in einer Webanwendung. Zu guter Letzt ist diese Suche, die Sie durchführen, möglicherweise nicht trivial, da einige Methoden einen gesamten Vererbungsbaum durchlaufen müssen.