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
в соответствующие обратные вызовы.
Что вы уже пробовали? –
Ну, я не знаком с способом шифрования атрибута напрямую, вместо этого вы можете шифровать и расшифровывать то, что вы можете использовать для сериализации и десериализации соответственно –
@VinayPandey, но как бы преобразовать параметры класса в base64? он должен быть сериализован. –