标签: nonserializedattribute

16
推荐指数
3
解决办法
5852
查看次数

不使用[Serializable]时[NonSerialized]的好处

我正在查看我正在处理的项目中的一些现有代码,我找到了一个实现为:

public class ThingOne
{
    private int A;

    private int B;

    [NonSerialized]
    private System.Timers.Timer timer1;
}
Run Code Online (Sandbox Code Playgroud)

它不应该看起来更像这样吗?

[Serializable]
public class ThingOne
{
    private int A;

    private int B;

    [NonSerialized]
    private System.Timers.Timer timer1;
}
Run Code Online (Sandbox Code Playgroud)

或者,即使类本身不是Serializable,添加[NonSerialized]还有一些额外的好处吗?

c# serialization nonserializedattribute

11
推荐指数
3
解决办法
7903
查看次数

如何使用XML序列化的公共访问器指定NonSerialized字段

如何使用XML序列化的公共访问器指定NonSerialized字段?

[NonSerialized]
public String _fooBar;
//Declaring the property here will serialize the _fooBar field
public String FooBar
{
    get { return _fooBar; }
    set { _fooBar = value; }
}
Run Code Online (Sandbox Code Playgroud)

c# serialization xml-serialization .net-3.5 nonserializedattribute

6
推荐指数
1
解决办法
7729
查看次数

[OptionalField]和[NonSerialized]之间有什么区别?

我在transcender上遇到了这个问题:

如果在反序列化期间不需要它的值,您应该对字段应用什么?

我= [NonSerialized],ANSWER = [OptionalField]

我的直觉反应是NonSerialised,但Transcender说我错了.就[非自动化]属性而言,我很清楚要注意什么,但我仍然希望这一点得到澄清.

据我所知,前者与同一程序集的较新版本和旧版本之间的版本冲突有关系.后者更关心的是没有序列化字段FULLSTOP.还有什么可以将这两者分开吗?MSDN并没有真正说明这一点,因为它们都使用XMLIgnoreAttribute在BinaryFormatters和SoapFormatter上使用XMLFormatter.

我的第二个问题是你可以混合搭配两个属性中的任何一个吗?我还没有使用它们.

只是抛出这个,但我的回答是否与[OnDeserialized]和IdeserilizationCallback接口的实现方式有关?

更新:

我知道可选字段属性不会序列化数据成员持有的值,但NonSerialized甚至不会序列化数据成员或其值.

.net c# nonserializedattribute

6
推荐指数
1
解决办法
4361
查看次数

为什么[NonSerialized]不能处理自动实现的属性?

[Serializable]
class MyClass
{
    [NonSerialized] int Foo { get; set; } // error
    [NonSerialized] int bar; // ok
}
Run Code Online (Sandbox Code Playgroud)

为什么不允许这样做?

我知道诸如此类的解决方法

  • 实现ISerializable
  • 切换到XmlSerializer/XmlIgnore
  • 切换到手动实现的属性

问题是具体为什么 [NonSerialized]不允许在本地使用,但允许在字段上使用.

.net serialization .net-3.5 nonserializedattribute

6
推荐指数
1
解决办法
3455
查看次数