簡體   English   中英

在運行時使類可序列化

[英]Make class serializable while runtime

我有一個小型庫,用戶可以使用通用接口設置和獲取屬性。 因此,用戶可以設置他或她想要的每個對象。

我有一個方法來使用BinaryFormatter將屬性保存到文件系統。 使用stringDateTime等本機類型...一切正常。 但是如果用戶有類似的自定義類

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM