C# 如何序列化具有不可序列化成员的类?

C# 如何序列化具有不可序列化成员的类?,c#,wpf,serialization,C#,Wpf,Serialization,我有一个类,我设置了[Serializable]并为该类定义了一个FontFamily类 “其他信息:在程序集”PresentationCore,版本=4.0.0.0,区域性=neutral,PublicKeyToken=31bf3856ad364e35“中键入”System.Windows.Media.FontFamily“未标记为可序列化。”您必须自己为这些字段实现序列化,即您需要。具体做法如下: 使用[NonSerialized]属性标记不可序列化的字段 添加一个可序列化类型的新临时字段,

我有一个类,我设置了[Serializable]并为该类定义了一个FontFamily类
“其他信息:在程序集”PresentationCore,版本=4.0.0.0,区域性=neutral,PublicKeyToken=31bf3856ad364e35“中键入”System.Windows.Media.FontFamily“未标记为可序列化。”

您必须自己为这些字段实现序列化,即您需要。具体做法如下:

  • 使用
    [NonSerialized]
    属性标记不可序列化的字段

  • 添加一个可序列化类型的新临时字段,例如
    private string\u fontFamilySerialized

  • 向类中添加三个方法,分别标记为、
    [OnSerialized]
    [OnDeserialized]
    属性

  • 在OnSerialization方法中,将字体系列的值序列化到临时字段中(例如,通过提取字体系列的名称)

  • 在OnSerialized方法中,清除临时字段-它不再需要,我们不希望人们开始使用它

  • 在OnDeserialized方法中,将临时字段中的值反序列化为字体族字段(例如,通过基于临时字段中存储的名称创建新的FontFamily对象)


  • 还有
    ondeserialization
    属性,这在这个过程中非常重要。