C# MongoDB序列化异常:子类属性与父类元素名冲突求助
解决MongoDB Bson序列化异常:同名属性元素名冲突
问题原因
aClassDao继承自aClass并重写了Content属性,MongoDB的Bson序列化器默认会处理基类和子类的所有属性,两者的Content属性使用了相同的元素名,导致序列化时出现冲突,触发BsonSerializationException。
解决方法
方法一:忽略基类的同名属性
在基类的Content属性上添加[BsonIgnore]特性,序列化时跳过基类的该属性,仅处理子类的重写属性:
public class aClass { [BsonIgnore] public virtual string Content { get; set; } }
方法二:通过类映射配置序列化规则
在应用初始化阶段注册类映射,手动配置子类的属性映射逻辑,确保只使用子类的Content属性:
// 放在应用启动代码中(如Program.cs或Startup.cs) BsonClassMap.RegisterClassMap<aClassDao>(cm => { cm.AutoMap(); // 取消基类Content属性的映射 cm.UnmapProperty(c => ((aClass)c).Content); // 映射子类的Content属性 cm.MapProperty(c => c.Content); });
方法三:为子类属性指定唯一元素名(可选)
如果需要保留基类属性的序列化能力,可以给子类的Content属性指定不同的元素名,避免命名冲突:
public class aClassDao : aClass { [BsonElement("DaoContent")] public override string Content { get; set; } }
内容的提问来源于stack exchange,提问作者Brudi_Voeller
相关产品推荐
相关产品推荐

