我为mongoDB创建了一个自定义序列化程序.我可以注册它,它按预期工作.
但是我的应用程序有时会抛出错误,因为它尝试两次注册序列化程序.
如何检测序列化程序是否已经注册,从而阻止我的应用程序再次注册?
TL;DR:如果你很懒,请使用BsonSerializer.LookupSerializer或BsonMemberMap.GetSerializer。为了正确执行此操作,请确保注册代码被调用一次且仅调用一次。
避免这种情况的最佳方法是确保序列化器仅注册一次。最好使用一些全局启动代码来注册应用程序全局的任何内容一次,并且仅注册一次。其中包括依赖注入器配置、自动映射器和 mongodb 驱动程序等工具。如果您仅从代码中的单个点调用此代码一次,则无需担心线程安全、死锁或类似问题。
MongoDB 驱动程序配置设置是线程安全的,但不要假设您可能需要配置的所有软件包都是如此。此外,如果您的代码是多线程的(例如在 Web 应用程序中),锁定的性能代价可能非常昂贵。最后但并非最不重要的一点是,您正在执行的查找首先可能并不简单,因为某些方法需要遍历整个继承树。
| 归档时间: |
|
| 查看次数: |
2343 次 |
| 最近记录: |