我正在尝试JsonResult
使用 MVC 控制器标准Json(object)
方法返回。我的类型对象Model1
是由 Fluent NHibernate 构建的。
Model1
具有类型的属性Model2
。在调试模式下,我看到环境创建了一个Model2
名为的代理后代类Castle.Proxies.Model2Proxy
。我相信,Fluent Nhibernate 在内部使用它来满足我的映射。而在运行时,实际的 model1.Model2 是 type Castle.Proxies.Model2Proxy
。
问题是当我Model1
被序列化时,Model2
也被序列化了。并且序列化器似乎试图序列化这个对象的所有属性,包括那些由 Castle 生成但我不需要的属性。如果它没有引起异常,我会同意的。也就是说,在这个对象内部的某个地方出现了一个循环引用,并且异常是由它引起的。这是异常文本:
System.InvalidOperationException: A circular reference was detected while serializing an object of type 'System.Reflection.RuntimeModule'
我仔细检查了我的域,发现那里没有循环引用,所以我责怪城堡。我对么?城堡真的应该为此负责吗?如果是这样,我有什么选择?如何告诉序列化程序忽略 Castle 属性?特别是,我如何告诉它序列化定义的类型,而不是实际的类型?
我倾向于用 ViewModels 覆盖我的域模型来解决这个问题,这是一种推荐的方法,但我真的很想知道另一种治疗方法,如果它存在的话。