我发现今天 MVC4 使用的 XML 和 Json 序列化程序之间存在相当大的差异。
我试图返回一个看起来像这样的对象:
public class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
public string FullName{ get{ return FirstName + " " + LastName }}
}
当客户端请求 json 作为结果时,我得到FirstName,LastName并FullName返回预期值。
但是,当客户端请求 XML 数据时,他只得到FirstName和LastName。
在我看来这是非常糟糕的,因为这意味着客户端将根据他们请求的格式获得不同的数据。
这似乎是故意的,因为 Json 序列化程序的文档说默认包含只读属性,而对于 Xml 序列化程序,默认情况下它们被排除在外。
所以我的问题是:我如何更改 MVC4 使用的 Xml 序列化程序以默认包含那些只读的。我知道它可以做到,因为如果您将DataContract属性添加到类,并将DataMember属性添加到类的每个属性,它也会返回只读变量,但我真的不想这样做。