c# - 反序列化一些类
问题描述
我创建了一个可序列化的类,并且在反序列化此文件时序列化了一些类实例后,我得到了一个类,但我需要获取所有类。
我使用 BinaryFormatter 序列化类。我使用 .NET Framework 在 C# 上进行编码。
我现在的反序列化:
using (var fs = new FileStream("doing.dat", FileMode.OpenOrCreate))
{
ActionsClass = formatter.Deserialize(fs) as Doing;
items.Add(ActionsClass.action);
}
上课做事:
[Serializable]
public class Doing : ActionsForm
{
public Doing(DateTime leadtime, string act)
{
if (leadtime < DateTime.Now) throw new ArgumentException("Some error text", nameof(leadtime));
if (act == "") throw new ArgumentException("Some error text", nameof(act));
PostTime = DateTime.Now;
TimeLead = leadtime;
action = act;
}
}
和类 ActionsForm:
[Serializable]
public abstract class ActionsForm
{
public DateTime PostTime { get; protected set; }
public DateTime TimeLead { get; protected set; }
public string action { get; protected set; }
}
解决方案
您必须反序列化您序列化对象的时间。
BinaryFormatter formatter = new BinaryFormatter();
DerivedClass object1 = new DerivedClass() { _baseField = "Object 1" };
DerivedClass object2 = new DerivedClass() { _baseField = "Object 2" };
using (FileStream writestream = new FileStream(@"data.bin", FileMode.Create, FileAccess.Write))
{
formatter.Serialize(writestream, object1);
formatter.Serialize(writestream, object2);
}
FileStream readstream = new FileStream(@"data.bin", FileMode.Open, FileAccess.Read);
DerivedClass deserializedobject1 = (DerivedClass)formatter.Deserialize(readstream);
DerivedClass deserializedobject2 = (DerivedClass)formatter.Deserialize(readstream);
readstream.Dispose();
推荐阅读
- python - 烧瓶登录和 CORS 问题
- python-3.x - 类型注释:从容器类型中提取内部类型
- image - 如何使用 IUP 和 IM 使用 Lua 添加图像标签/按钮?
- snapshot - 如何删除 CloudPageBlob 类型 blob 对象的特定快照?
- bazel - 让 rules_cc 使用最新版本的 GCC
- laravel - Laravel 使用 Eloquent 在一个查询中创建多条记录并获取创建的模型
- python - 使用 BeautifulSoup 进行 Web 抓取时出现错误 429
- javascript - Rails 6.0.4 远程:true 不在浏览器中 js/ajax 渲染 _partial.html.erb
- reactjs - 在@devexpress/dx-react-chart-material-ui 中绘制areaeries 的顶部曲线
- java - Firebase 日志不起作用,并且在 firebase 上看不到日志