シリアル化の通常の方法は、クラスに属性を適用してシリアル化(または逆シリアル化)をどのように進めるかを記述することです。たとえば:JSON.NETは「サイドカー」アプローチを使用してオブジェクトをシリアライズできますか?
[DataContract]
class MyClass
{
[DataMember]
public string Name { get; set; }
}
は、あなたのクラスに属性を適用せずにJSON.NETを使用して直列化を実行するための方法ですが、代わりにシリアライズされるクラスのどのような側面を説明し、「サイドカー」オブジェクトを提供することにより、中いくつかのファッション。
私が尋ねる理由は懸念の分離に関する。要求がどのように到達するかに無関心であるAPIを使用している場合、その自然な拡張は、APIデータ構造が直列化属性で補完されるべきではないということです。
私のAPI結果オブジェクトの1つの "コンテンツ"を取得して、それをのに持つクラスを持つ別のオブジェクトにコピーすることはできますが、場合によっては、 "ねえ、私はこのオブジェクトをシリアル化したい、オブジェクトにはシリアル化属性がないので、ここでは何をすべきかを記述する別のデータ構造があります。
これは便利な場所ですが、もちろん、オブジェクトを変更する機会がないサードパーティ製のライブラリもあります(この場合も、値のコピーを作成できますが、私は他の方法を探しています)。
「sidercar」オブジェクトは、[DTO(http://stackoverflow.com/q/725348/1997232)です。データを直接シリアル化したくない場合は、DTOを使用してデータをシリアル化できます。他のものは、それ自身の[属性](http://www.newtonsoft.com/json/help/html/serializationattributes.htm)でjsonのシリアル化を制御できるものです。オプトインモードを設定し、シリアル化するフィールド/プロパティのみをマークします。彼らは「プライベート」でさえあり得る。 – Sinatr