我有一个小型图书馆,用户可以使用通用接口设置和获取属性。因此,用户可以设置他或她想要的任何对象。
然后我有一个方法,使用
然后我有一个方法,使用
BinaryFormatter
将属性保存到文件系统中。对于像string
或DateTime
这样的本机类型,一切正常。但是如果用户有自定义类...class User
{
public string Name { get; set; }
}
当我得到一个异常时,它说 class
Person 没有被标记为 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);
}