TL; DR: 怠け者の場合は、BsonSerializer.LookupSerializer
を使用してください またはBsonMemberMap.GetSerializer
。 正しく行う 、登録コードが1回だけ呼び出されることを確認してください 。
これを回避する最善の方法は、シリアライザーが1回だけ登録されるようにすることです。アプリケーションに対してグローバルなものを1回だけ登録するグローバルスタートアップコードを用意することをお勧めします。これには、依存性注入の構成、automapperやmongodbドライバーなどのツールが含まれます。このコードを1回だけ呼び出し、コード内の1つのポイントから呼び出す場合は、スレッドセーフ、デッドロック、または同様の問題について心配する必要はありません。
MongoDBドライバーの構成設定はスレッドセーフですが、構成が必要になる可能性のあるすべてのソフトウェアパッケージにこれが当てはまるとは限りません。また、ロックは非常に高額になる可能性があります コードがマルチスレッドの場合、たとえばWebアプリケーションの場合のパフォーマンスの面で。最後になりましたが、一部のメソッドは継承ツリー全体をウォークする必要があるため、実行しているルックアップはそもそも簡単ではない可能性があります。