我可以使用以下代码序列化代理对象:
public class NHibernateContractResolver : DefaultContractResolver
{
protected override JsonContract CreateContract(Type objectType)
{
if (typeof(NHibernate.Proxy.INHibernateProxy).IsAssignableFrom(objectType))
return base.CreateContract(objectType.BaseType);
return base.CreateContract(objectType);
}
}
但是如何在序列化期间使JSON.NET
忽略NHibernate Proxy
个对象。
我面临的问题是,父对象正在获取1000个子对象,因为我只想为父对象发送JSON,所以我想忽略代理对象并仅获取预先加载的关系。
如果我评论上面的代码,那么我得到了JSON.NET无法序列化代理对象的错误。
请帮忙!
答案 0 :(得分:4)
写一个像这样的虚拟类。
public class NhProxyJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteNull();
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return typeof(INHibernateProxy).IsAssignableFrom(objectType);
}
}