2 つの異なるコントラクト シリアライザーを使用して 2 つの異なるエンドポイントを持つことが可能かどうかを知っている人はいますか? 特に、SOAP/XML のデフォルトの DataContractSerializer と REST/JSON の Json.NET シリアライザー
目的 (互換性の問題による) は、同じDTO クラスのPerson を以下のJSONおよびXML形式にシリアル化することです。
DTO クラス:
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
}
JSON
{Psn:{"Nm":"name1","Snm":"surname1"}}
XML
<Person><Name>name1</Name><Surname>surname1</Surname></Person>
ご覧のとおり、JSON の応答には短縮されたプロパティ名が含まれている必要がありますが、XML バージョンの完全なプロパティ名が含まれている必要があります。
私の考えでは、DataContractSerialiser によって理解されるものと Json.Net シリアライザーによって理解されるもの、つまり次のようなものです。
[DataMember]
[JsonObject(Title="Psn")]
public class Person
{
[DataMember]
[JsonProperty(PropertyName="Nm")]
public string Name { get; set; }
[DataMember]
[JsonProperty(PropertyName="Snm")]
public string Surname { get; set; }
}
これをどのように達成できるかについての考えをいただければ幸いです。