【发布时间】:2014-03-25 15:14:53
【问题描述】:
我有一个包含多个实体类的域模型组件。在另一个组件中,我有使用 Json.NET 序列化实现的实体存储库。我想在序列化过程中忽略一些实体属性,因此直接的解决方案是使用 JsonIgnore 属性装饰这些属性。但是,出于原则,我想避免在我的域模型中引用其他组件 - 包括 Json.NET 等 3rd 方库。
我知道我可以按照here 的描述创建自定义合同解析器,但是很难在各种实体中概括哪些要序列化和哪些不应该序列化。通常我想忽略所有只读属性,但也有例外,例如集合:
public List<Pixel> Pixels
{
get { return this.Pixels; }
}
我还可以为每个实体创建一个专用的合同解析器,如 here 所述,但这对我来说似乎是一个需要大量维护的解决方案 - 特别是对于众多实体。
如果 Json.NET 支持 .NET 框架内的某些属性,理想的解决方案是,但我什至找不到合适的候选者...
我考虑过在我的域模型中创建自己的自定义 Ignore 属性,并创建一个使用反射来检测此属性并在序列化时忽略修饰属性的自定义合同解析器。但这真的是给定问题的最佳解决方案吗?
【问题讨论】: