使类在运行时可序列化
本文关键字:序列化 运行时 | 更新日期: 2023-09-27 18:21:39
我有一个小库,用户可以在其中使用通用接口设置和获取属性。因此用户可以设置他或她想要的每个对象。
然后我有一种方法可以使用BinaryFormatter
将属性保存到文件系统中。使用像string
、DateTime
或…这样的本机类型。。。一切都很好。但是如果用户有像这样的自定义类
class User
{
public string Name { get; set; }
}
我得到了一个例外,即class
人不是市场上的Serializable
。如果我写关于我的类的[Serializable]
属性,它就可以正常工作。
现在我的问题是:有没有一种方法可以在运行时将类声明为Serializable
?所以,如果用户忘记这样做,我可以试试吗?
序列化的代码看起来像:
public void Save(string saveFilePath)
{
byte[] binaryData;
using (var memoryStream = new MemoryStream())
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, AllProperties);
binaryData = memoryStream.ToArray();
}
File.WriteAllBytes(saveFilePath, binaryData);
}
System.Type
上的反射来搜索该元数据。
声明类的用户必须在编译时这样做。