TL; DR: Nếu bạn lười biếng, hãy sử dụng BsonSerializer.LookupSerializer
hoặc BsonMemberMap.GetSerializer
. Để làm đúng , đảm bảo mã đăng ký được gọi một lần và chỉ một lần .
Cách tốt nhất để tránh điều này là đảm bảo rằng bộ nối tiếp chỉ được đăng ký một lần. Bạn nên có một số mã khởi động toàn cầu đăng ký bất kỳ thứ gì toàn cầu cho ứng dụng một lần và chỉ một lần. Điều đó bao gồm những thứ như cấu hình bộ phun phụ thuộc, các công cụ như automapper và trình điều khiển mongodb. Nếu bạn chỉ gọi mã này một lần và từ một điểm duy nhất trong mã, bạn không cần phải lo lắng về độ an toàn của luồng, khóa chết hoặc những rắc rối tương tự.
Cài đặt cấu hình trình điều khiển MongoDB là an toàn theo luồng, nhưng đừng cho rằng điều này đúng với tất cả các gói phần mềm mà bạn có thể cần định cấu hình. Ngoài ra, khóa có thể rất đắt hiệu suất khôn ngoan nếu mã của bạn là đa luồng, chẳng hạn như trong một ứng dụng web. Cuối cùng nhưng không kém phần quan trọng, việc tra cứu mà bạn đang thực hiện có thể không đơn giản ngay từ đầu, vì một số phương thức cần phải chạy toàn bộ cây kế thừa.