このようなコードを書くとき
[XmlIgnore]
[NonSerialized]
public List<string> paramFiles { get; set; }
次のエラーが表示されます。
Attribute 'NonSerialized' is not valid on this declaration type.
It is only valid on 'field' declarations.
私が書いたら
[field: NonSerialized]
次の警告が表示されます
'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.
私が書いたら
[property: NonSerialized]
次のエラーが再び表示されます:
Attribute 'NonSerialized' is not valid on this declaration type.
It is only valid on 'field' declarations.
使用方法[NonSerialized]
プロパティについて?
まあ...最初のエラーは、あなたはそれを行うことができないと言っています... http://msdn.Microsoft.com/en-us/library/system.nonserializedattribute.aspx
[AttributeUsageAttribute(AttributeTargets.Field, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class NonSerializedAttribute : Attribute
バッキングフィールドの使用をお勧めします
public List<string> paramFiles { get { return list;} set { list = value; } }
[NonSerialized]
private List<string> list;
簡単な使用:
[XmlIgnore]
[ScriptIgnore]
public List<string> paramFiles { get; set; }
うまくいけば、それが役立ちます。
.NET 3.0以降では、Serializableの代わりに DataContract を使用できます。ただし、DataContractでは、シリアル化可能なフィールドに DataMember 属性をマークして「オプトイン」する必要があります。または IgnoreDataMember を使用して「オプトアウト」します。
オプトインとオプトアウトの主な違いは、デフォルトではオプトアウトがパブリックメンバーのみをシリアル化するのに対し、オプトインはマークされたメンバーのみをシリアル化することです(保護レベルに関係なく)。