c# - 为什么忽略默认约定不适用于 mongodb c# 中的嵌套子属性?
问题描述
我有两个 POCO 对象:
class A
{
public string Title { get; set; }
public B Child { get; set; }
}
class B
{
public string Name { get; set; }
public string ShouldBeIgnored { get; set; }
}
给定以下 JSON POST 对象:
{
"child": {
"name": "foo"
}
}
这正确地评估了我的 C# 模型,其中缺少属性的值为空。
我想将其转换为 BsonDocument,因此我正在myObject.ToBsonDocument()
这样做。
我已经注册了以下约定:
ConventionRegistry.Register("IgnoreIfDefault",
new ConventionPack { new IgnoreIfDefaultConvention(true) },
t => true);
我希望忽略父对象和子对象(A 和 B)上的所有默认值属性,但产生的结果如下:
{
"Child" : {
"_t" : "B",
"Name" : "foo",
"ShouldBeIgnored" : null
}
}
为什么会忽略父默认值而不忽略子值?
解决方案
更新
解决了这个问题。
我在注册约定之前注册了我的类映射以忽略默认值,因此生成了一个不忽略空值的类映射,它优先于约定。更改应用程序启动生命周期以注册约定首先解决了该问题。
推荐阅读
- android - 如何同步从 LiveData 中获取价值?
- vba - 只退出 1 个 for 循环而不是另一个
- javascript - 没有关联的音频元素
- node.js - 动作英雄动作立即返回
- ssh - 计算 ecdsa-sha2-nistp256 的交换哈希
- php - 无法在我的 JQuery 脚本中从 PHP 访问 json_encode 数据
- c# - 如何获取在 ASP.NET 中单击的按钮的动态设置 ID
- list - Prolog 中的关联列表
- elasticsearch - 如何在 Kibana 中过滤消息?
- asp.net-mvc - .net MVC 链接到区域内视图的正确方法