SonarCube показывает мне ошибку " Обновите эту реализацию 'ISerializable', чтобы она соответствовала рекомендованному шаблону сериализации " для следующей реализации исключения:
[Serializable]
public class UnrecoverableException : Exception, ISerializable
{
public bool Ignore { get; }
public UnrecoverableException()
{
}
public UnrecoverableException(string message, Exception innerException)
: base(message, innerException)
{
}
protected UnrecoverableException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
Ignore= info.GetBoolean(nameof(Ignore));
}
public UnrecoverableException(string message, bool ignore= false) : base(message)
{
Ignore= ignore;
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue(nameof(Ignore), Ignore);
base.GetObjectData(info, context);
}
}
не уверен, что здесь не так, как мне кажется, что полностью следующие правила, описанные здесь https://rules.sonarsource.com/csharp/tag/pitfall/RSPEC-3925
Эти правила поднимают проблему для типов, которые реализуют ISerializable
, не следуя шаблону сериализации, рекомендованному Microsoft.
Отсутствует атрибут System.SerializableAttribute
.
Несериализуемые поля не помечены атрибутом System.NonSerializedAttribute
.
Конструктор сериализации отсутствует.
Незапечатанный тип имеет конструктор сериализации, который не защищен.
Герметичный Тип имеет конструктор сериализации, который не является закрытым.
Нераспечатанный тип имеет ISerializable.GetObjectData
, который не является ни publi c, ни виртуальным.
Производный тип имеет серию конструктор lization, который не вызывает базовый конструктор.
Производный тип имеет метод ISerializable.GetObjectData
, который не вызывает базовый метод.
Производный тип имеет сериализуемые поля, но метод ISerializable.GetObjectData
не переопределяется.