Quand j'écris du code comme ça
[XmlIgnore]
[NonSerialized]
public List<string> paramFiles { get; set; }
J'obtiens l'erreur suivante:
Attribute 'NonSerialized' is not valid on this declaration type.
It is only valid on 'field' declarations.
Si j'écris
[field: NonSerialized]
Je reçois l'avertissement suivant
'field' is not a valid attribute location for this declaration.
Valid attribute locations for this declaration are 'property'.
All attributes in this block will be ignored.
Si j'écris
[property: NonSerialized]
J'obtiens l'erreur (à nouveau) suivante:
Attribute 'NonSerialized' is not valid on this declaration type.
It is only valid on 'field' declarations.
Comment puis-je utiliser [NonSerialized]
sur une propriété?
Eh bien ... la première erreur dit que vous ne pouvez pas faire ça ... à partir de http://msdn.Microsoft.com/en-us/library/system.nonserializedattribute.aspx
[AttributeUsageAttribute(AttributeTargets.Field, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class NonSerializedAttribute : Attribute
Je suggère d'utiliser le champ de support
public List<string> paramFiles { get { return list;} set { list = value; } }
[NonSerialized]
private List<string> list;
Utilisation simple:
[XmlIgnore]
[ScriptIgnore]
public List<string> paramFiles { get; set; }
Espérons que cela aide.
Depuis .NET 3.0, vous pouvez utiliser DataContract au lieu de Serializable. Cependant, avec DataContract, vous devrez soit vous inscrire en marquant les champs sérialisables avec l'attribut DataMember ; ou "opt-out" en utilisant IgnoreDataMember .
La principale différence entre l'opt-in et l'opt-out est que l'opt-out par défaut ne sérialise que les membres publics, tandis que l'opt-in ne sérialise que les membres marqués (quel que soit le niveau de protection).