修改 RavenDb 序列化以包括私有字段,而不仅仅是属性

Amend RavenDb serialization to include private fields, not just properties

我的域模型对象大多具有私有字段,其中它们的状态由强制不变量的原子方法修改。我真的不想使用私有属性并将它们保留为字段。

有没有办法配置 RavenDb 在其序列化中包含私有字段?

我想我想要的是类似于 this post 中为 JSON.Net 库描述的东西,我认为 RavenDb 在幕后使用它,但我看不到实现所描述内容的方法。

我可以看到有这个:

docStore.Conventions.CustomizeJsonSerializer

但我还是不知道在哪里指示它包含字段?

按照 Alexey 的建议 post 向我指出了正确的方向,post 实际上使用了已弃用的 属性 - 我就是这样做的:

public class IncludeNonPublicMembersContractResolver : DefaultContractResolver
{
    protected override List<MemberInfo> GetSerializableMembers(Type type)
    {
        var members = new List<MemberInfo>();

        members.AddRange(type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance));
        members.AddRange(type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance));

        return members;
    }
}

docStore.Conventions.JsonContractResolver = new IncludeNonPublicMembersContractResolver();