SerializationInfo替换值(不能将同一成员两次添加到SerializationInfo对象)

时间:2018-01-25 16:45:25

标签: c# .net-core

我试图在可序列化对象的子类上覆盖ISerializable.GetObjectData。我想用我自己的值替换其中一个值,但我无法弄清楚如何做到这一点。这是我尝试过的。

public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
    base.GetObjectData(info, context);
    //replace the message value in info with my own value
    info.AddValue("Message", this.Message);
}

它引发了一个例外"Cannot add the same member twice to a SerializationInfo object"

1 个答案:

答案 0 :(得分:1)

info.UpdateValue(name, value, type);

请注意这里的警告! https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Runtime/Serialization/SerializationInfo.cs#L358-L360

请注意,此API并不存在于常规.NET中,但由于您的目标是.NET核心,因此您应该可以使用它。