【发布时间】:2019-12-16 08:45:16
【问题描述】:
如果不能将基类标记为可序列化,如何序列化 c# 类。
我在 c# wpf 应用程序中使用 Caliburn Micro,MyViewModel 派生自 Screen (https://caliburnmicro.com/documentation/composition)。我需要将 MyViewModel 的 (Xml 序列化器 / BinarySerializer / DataContractSerializer) 对象序列化到一个文件中,以便我以后可以使用它。
我可以将 MyViewModel 标记为 [Serializable],但出现异常,即基类(来自 caliburn micro 的 Screen)未标记为 [Serializable],因此无法序列化对象。我无法在 Screen 中将属性添加为 [Serializable],因为它是第三方库。
谁能建议我如何序列化 MyViewModel 对象?
[Serializable]
public class MyViewModel : Screen
{
// Rest of functionalities
}
我遇到了异常:在程序集“Caliburn.Micro, Version=3.2.0.0, Culture=neutral, PublicKeyToken=1f2ed21f”中键入“Caliburn.Micro.Screen”未标记为可序列化。
【问题讨论】:
-
您是否仅限于使用内置的 .NET 序列化程序?有很多第三方序列化器,例如 JSON.NET,它们不需要 [Serializable] 属性。
-
在典型的 MVVM 应用程序中,您将序列化模型而不是视图模型。
-
我使用 NewtonSoft Json 进行 JsonSerialization 但得到空白字符串。示例:newtonsoft.com/json/help/html/SerializingJSON.htm
标签: c#