簡體   English   中英

序列化protobuf中的類成員

[英]Serializing a class member in protobuf

我有以下課程:

public class A
{
    public Options Options 
    {
        get { return mOptions; }
        set { mOptions = new Options(value); }
    }
}

在序列化過程之前,是否可以加密Options的值(先將其編碼為base64,然后再對其進行加密)? 但是,我不想更改Options成員的訪問修飾符。

Protobuf.Net可以處理序列化/反序列化之前/之后的回調。 您可以使用它們來更改或初始化字段。

例如,您可以使用以下代碼執行所需的操作:

[ProtoContract]
public class A
{
    [ProtoMember(1)]
    private string m_OptionsEncrypted;

    private Options mOptions;

    public Options Options 
    {
        get { return mOptions; }
        set { mOptions = new Options(value); }
    }

    [ProtoBeforeSerialization]
    private void OnSerializing()
    {
        m_OptionsEncrypted = Encrypt(mOptions);
    }

    [ProtoAfterDeserialization]
    private void OnDeserialized()
    {
        mOptions = Decrypt(m_OptionsEncrypted);
    }
};

請注意, mOptions字段沒有ProtoMember屬性。 這允許我們僅序列化/反序列化m_OptionsEncrypted字段,並將其轉換為相應回調中的Options類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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