web-dev-qa-db-ja.com

DataContractとSerializableを一緒に使用できますか?

私はWCFサービスに取り組んでいます。私のすべてのクラスはすでに[Serializable]属性を使用してシリアル化されていますが、「k__BackingField」プロパティの名前付けの問題のため、DataContract属性とDataMember属性を使用しました。したがって、次のように両方の属性を一緒に使用できますか?

[Serializable]
[DataContract]
public class User
{

  [DataMember]
  public string Name { get; set; }

  [DataMember]
  public int UserID { get; set; }
}

これは正しいです?

私もここで同様の解決策を得ました。 JSONのC#自動プロパティ逆シリアル化

Serializable and DataContract(not vs?)

26
Rajesh Kumar

これによると、MSDNでDataContract属性とSerializable属性の両方を一緒に使用できる記事を見つけました。

[Serializable]を使用すると、すべてのフィールドがデータコントラクトの一部になります([NonSerialized]でマークされている場合を除く)。 [DataContract]では、[DataMember]でマークされたメンバーのみが含まれます。タイプに[DataContract]属性と[Serializable]属性の両方がある場合、[DataContract]マッピングが使用されることに注意してください。

http://msdn.Microsoft.com/en-us/magazine/cc163569.aspx

40
Rajesh Kumar

ネーミングに問題があるのなら、使ってみませんか

[XmlElement(ElementName = "Name")]
public string Name { get; set; } 
1