序列化/反序列化实体时可以改写默认的WCF DataContractSerializer行为,而改用JSON.NET吗?
我具有以下处理城市实体的服务合同。出于设计原因,City实体的IsReference = true,因此默认的DataContractSerializer引发错误。
对于“ GET”方法,我可以使用JsonConvert.DeserializeObject处理这种情况,但是对于“ PUT,POST,DELETE”方法,DataContractSerializer优先并且无法抱怨IsReference实体无法序列化。
我已经找到了实现IOperationBehavior并提供我自己的序列化程序的帖子,但是我不知道如何将Json.NET与此集成。我相信应该有更直接的方法。
对于这种情况的任何帮助或指导,或对其他方法的建议,我将不胜感激。
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class CityService
{
[Description("Get all Cities")]
[WebGet(UriTemplate = "")]
public Message Cities()
{
}
[Description("Allows the details of a single City to be updated.")]
[WebInvoke(UriTemplate = "{code}", Method = "PUT")]
public Message UpdateCity(string code, City city)
{
}
}