今日の 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
、実際にはそうしたくありません。