当我将域存储在MongoDB中时,我使用了一个自定义约定(如本文所述),以便将枚举保持为字符串表示,因为我们发现在调试时更容易。
当使用MongoDB作为我在Rebus中的传奇存储时,我也希望这样做。有办法做到这一点吗?
好吧,我的坏。。。使用conventions Registry 在全球范围内定义公约
var conventions = new ConventionPack();
conventions.Add(new EnumSerializationConvention(BsonType.String));
ConventionRegistry.Register("Saga conventions", conventions, x => true);
关键是Register方法的第三个参数,它充当一个过滤器来选择受约定影响的类(在我的情况下,我是按命名空间进行过滤的,这就是saga数据没有正确持久化的原因)。