2
我有一个小型库,用户可以使用通用接口设置和获取属性。因此,用户可以设置他或她想要的每个对象。使类在运行时可序列化
比我有一种方法,使用BinaryFormatter
将属性保存到文件系统。使用像string
或DateTime
或......一切正常,一切工作正常。但是,如果用户有一个像
class User
{
public string Name { get; set; }
}
自定义类比我得到一个例外,那class
人是不是市场Serializable
。如果我写关于我的课程的[Serializable]
属性,它可以正常工作。
我现在的问题是:有没有一种方法可以在运行时声明一个类为Serializable
?所以如果用户忘记了,我可以试试吗?
的序列化的代码如下所示:在C#
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);
}
我很确定你不能,看到http://stackoverflow.com/questions/129285/can-attributes-be-added-dynamically-in-c这将是一个不好的做法,以及我会说 – derape 2014-09-11 08:57:50
您可以使用像http://www.sharpserializer.com/en/index.html或xmlserialisation这样的库。但正如derape所说,这是不好的做法。 – user1519979 2014-09-11 09:02:19
好的。谢谢。用户将不得不为此承担责任。 – Tomtom 2014-09-11 09:10:15