将不可序列化对象序列化或取消设置为可序列化对象的一部分 (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] 标记字段以将其排除在序列化之外。