[英]Make class serializable while runtime
我有一個小型庫,用戶可以使用通用接口設置和獲取屬性。 因此,用戶可以設置他或她想要的每個對象。
我有一個方法來使用BinaryFormatter
將屬性保存到文件系統。 使用string
或DateTime
等本機類型...一切正常。 但是如果用戶有類似的自定義類
class User
{
public string Name { get; set; }
}
比我得到一個Exception, class
Person不是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);
}
C#中的屬性是靜態元數據。 它們不能在運行時注入。 您可以做的是使用System.Type
上的反射來在運行時搜索該元數據。
聲明該類的用戶必須在編譯時這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.