将不可序列化对象序列化或取消设置为可序列化对象的一部分 (C#)
Serialize or unset non-serializeble object as part of serializable object (C#)
假设我有一个对象 class MyClass 和一个对象 SerialPort在里面。
我正在尝试序列化并保存到文件 "MyClass" 的对象,但我不能,因为 class SerialPort 的对象不可序列化。跳到追逐,我有这样的事情:
[Serializable]
public class MyClass
{
public MyClass()
{
}
public SerialPort mySerialPort;
}
看来 C# 不允许我取消设置或更改 mySerialPort 的类型。在这种情况下有什么解决方法?
mySerialPort = null; // obviously doesn't work
我需要从 MyClass 类型的对象中访问串行端口,但在序列化它时我并不真正需要它。有没有办法在对象构造期间将其作为参数传递,使其不是对象的一部分?
您可以用 [NonSerialized]
标记字段以将其排除在序列化之外。
假设我有一个对象 class MyClass 和一个对象 SerialPort在里面。 我正在尝试序列化并保存到文件 "MyClass" 的对象,但我不能,因为 class SerialPort 的对象不可序列化。跳到追逐,我有这样的事情:
[Serializable]
public class MyClass
{
public MyClass()
{
}
public SerialPort mySerialPort;
}
看来 C# 不允许我取消设置或更改 mySerialPort 的类型。在这种情况下有什么解决方法?
mySerialPort = null; // obviously doesn't work
我需要从 MyClass 类型的对象中访问串行端口,但在序列化它时我并不真正需要它。有没有办法在对象构造期间将其作为参数传递,使其不是对象的一部分?
您可以用 [NonSerialized]
标记字段以将其排除在序列化之外。