28

私は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#自動プロパティ逆シリアル化

シリアル化可能でDataContract(対ではない?)

4

2 に答える 2

43

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

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

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

于 2011-03-23T15:29:37.583 に答える
1

問題が名前付けにある場合は、なぜ使用しないのですか

[XmlElement(ElementName = "Name")]
public string Name { get; set; } 
于 2011-03-23T12:27:54.770 に答える