如何解决C#JsonConverter有时会丢失对原始实例的引用
我正在将自定义JsonConverters与RavenDB一起使用,以便在保存/检索时写入/读取引用。另外,我正在处理的实体是一个嵌套结构,该结构开始使用这些引用填充自身,再次调用RavenBroker,并再次执行JsonConverter,依此类推。
这就是为什么当我创建JsonConverter实例时,我将代理的实例作为参数发送
public AbstractRuleBroker()
{
this.CustomConverters = new List<AbstractConverter<AbstractRule>> { new RuleSetConverter( this ) };
}
在这里您可以看到在反序列化对象时我如何使用该代理查找那些引用 JsonConverter ReadJson method
由于业务逻辑的原因,我需要存储在经纪人财产中的原始调用中的特定值。
问题在于,对于某些执行(相同的方法,相同的参数,我使用邮递员调用API),该属性会以null的形式到达那里,有时它应该具有该值。
在这里我分配该值 FilteredVersion assignment
第一次调用,一切都很好。值在那里。 1st invocation debug results
第二次调用,null。 2nd invocation debug results
我发现,在调试时,在这些值为null的情况下,从Broker的角度执行GetHashCode()
方法将返回不同的内存地址。这使我想到,添加自定义转换器时,如果在序列化器中没有正确设置某些内容。 (也许是ContractResolver?)
this.Connection.Conventions.CustomizeJsonSerializer = serializer =>
{
serializer.TypeNameHandling = TypeNameHandling.Auto;
if( !( converters is null ) )
{
GetCustomConverters().ForEach( c => serializer.Converters.Add( c ) );
}
};
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。