Это является продолжением вопроса:Ошибка сериализации унаследованного свойства в .NET 4.5
Serialization breaks in .NET 4.5
У меня есть свойство в унаследованном коде, который вызывает у меня горе в сериализации на .NET 4.5.
Это свойство:
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
private new object Value
{
get
{
return base.Value;
}
set
{
base.Value = value;
}
}
Который был, вероятно, введены, чтобы попытаться скрыть свойство «Value» базового класса. Единственным решением, которое работало до сих пор, было , пусть сериализатор знает, что я хочу сериализовать в .NET4. Но это проблема для меня. (Эта конфигурация должна быть установлена только в том случае, если на компьютере с трассировкой установлен .NET 4.5, в противном случае возникает исключение).
Я думаю, что я могу удалить свойство все вместе, но поскольку я имею дело с большой и сложной системой устаревания, я не уверен, какими могут быть побочные эффекты.
Так что мой quesion двояка:
Почему inhertied брейки свойство .NET 4.5 сериализации?
Какие неприятные побочные эффекты следует ожидать, если я удалю унаследованное свойство?
спасибо. если я изменю тип компиляции 4.5, будет ли это работать? потому что в этом случае флаг устаревшего seiraliztion не поможет, так как это скомпилировано в 4.5 no 4.0 –
Этот коммутатор работает хорошо, если вы используете целевое приложение 4.5/4.0 в среде выполнения 4.5. Но коммутатор выходит из строя, если вы запускаете целевое приложение 4.0 на чистую машину 4.0. Но вам не нужен этот конфигурационный переключатель, если вы запускаете приложение в чистом режиме 4.0, так как ваш десериализатор уже работает отлично. Таким образом, вам просто нужно условно установить этот конфигурационный переключатель на основе того, какое время работы имеет ваша машина. – Praburaj