私は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#自動プロパティ逆シリアル化
これによると、MSDNでDataContract属性とSerializable属性の両方を一緒に使用できる記事を見つけました。
[Serializable]を使用すると、すべてのフィールドがデータコントラクトの一部になります([NonSerialized]でマークされている場合を除く)。 [DataContract]では、[DataMember]でマークされたメンバーのみが含まれます。タイプに[DataContract]属性と[Serializable]属性の両方がある場合、[DataContract]マッピングが使用されることに注意してください。
ネーミングに問題があるのなら、使ってみませんか
[XmlElement(ElementName = "Name")]
public string Name { get; set; }