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