RavenDb:声明类型的强制序列化不是分配给集合的继承类型

问题描述

我有以下适用于属性的 ContractResolver,以确保将属性序列化为 Ravendb 作为属性的声明类型,而不是分配的对象的实际继承类型。当您想在具有字段子集但不存储整个对象的数据库中存储对其他内容的引用,但您使用整个对象设置属性时,这很有效。

public class StrictTypeContractResolver : DefaultContractResolver
{
    private readonly FieldInfo _IsSealedField = typeof(JsonContract).GetField("IsSealed",BindingFlags.Instance | BindingFlags.NonPublic)!;

    public override JsonContract ResolveContract(Type type)
    {
        var resolveContract = base.ResolveContract(type);
        _IsSealedField.SetValue(resolveContract,true);
        return resolveContract;
    }
}

当您有一个 ICollection 或 IList 或任何类型的集合,您将使用相同的引用添加对象,然后从引用继承对象时,就会出现问题。如何让 Icollection 仅序列化集合或列表的定义类型而不是分配的对象?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)