2013-11-29 4 views
1

Должен ли я помещать [NonSerialized] для каждого свойства класса?NonSerialized для нескольких свойств

[NonSerialized] 
public Cell Owner; 
[NonSerialized] 
public double Time 
+1

Да, вам нужно (если вы хотите, чтобы все эти поля не были сериализованы) –

+2

Нет; только те, которые вы не хотите сериализовать. Кроме того, это поля, а не свойства. – SLaks

+0

'[NonSerialized]' предполагает, что вы используете 'BinaryFormatter', и в этом случае я думаю, что другой важный совет: * Будьте очень осторожны там * - он может быть хрупким. Лично я всегда советую людям использовать другой сериализатор; в значительной степени * любой другой * сериализатор, чем этот. За исключением «NetDataContractSerializer» - не используйте это: p –

ответ

2

Если вы посмотрите на определение атрибута (http://msdn.microsoft.com/en-us/library/system.nonserializedattribute.aspx):

[AttributeUsageAttribute(AttributeTargets.Field, Inherited = false)] 
[ComVisibleAttribute(true)] 
public sealed class NonSerializedAttribute : Attribute 

AttributeTargets.Field говорит вам, что он может быть использован на полях и не наследуемое

Таким образом, вы должны использовать его на полях, которые вы не хотите быть сериализуемыми.

Смежные вопросы