ASP.NET Web API和类

我有一个标有[Serializable]的类。 当我从Web API返回它时,字段名称都很时髦。

通常返回的JSON是

[{"OrderId":797 ... 

使用[Serializable]时返回JSON

 [{"k__BackingField":797 ... 

我不想将其标记为可序列化以使用BinaryFormatter进行缓存。 除了编写自定义序列化程序或制作一个不可序列化的双胞胎类并编写猴子代码以在两者之间“施放”之外,还有其他方法吗?

你只需要这个单行来让Json.NET再次忽略[Serializable]语义:

 ((DefaultContractResolver)config.Formatters.JsonFormatter.SerializerSettings.ContractResolver).IgnoreSerializableAttribute = true; 

一个更好的解决方案可能是完全摆脱[Serializable],停止使用BinaryFormatter,并使用不同的序列化器来代替你想做的任何缓存,例如Json.NET序列化器。