CA2235: Поле является членом типа, который сериализуем, но имеет тип, который не сериализуем. NET Стандарт - PullRequest
0 голосов
/ 30 апреля 2020

Я портирую проект из. NET framework (4.5) в. NET standard (2.0). Фреймворковая версия этого раздела кода кажется достаточно счастливой, но стандартный раздел дает мне предупреждение CA2235

Кажется, не имеет значения, если

  1. Это авто свойство, свойство с полем подложки или просто прямое поле
  2. Независимо от того, доступно ли оно только для чтения (т. е. имеет ли оно установщик)
  3. У меня есть конструктор с 0 параметрами или нет (иногда актуально с проблемами сериализации)

Итак, в приведенном ниже коде:

[Serializable]
public class MyTestClass
{
    // "MyString" below produces Warning CA2235
    //    Field MyString is a member of type MyTestClass which is serializable but is of
    //    type string which is not serializable PluginsInterface
    public string MyString { get; set; }

    // Field MyNullableInt is a member of type MyTestClass which is serializable but is of
    //    type int? which is not serializable
    public int? MyNullableInt { get; set; }

    //Both of the following seem to be OK
    public int MyInt { get; set; }
    public SomeEnum MyEnum { get; set; }
}

public enum SomeEnum
{
    One,
    Two,
    Three
}

В поисках, которые я сделал, кажется, это было исправлено . Я перешел на страницу проекта и на вкладку «Анализ кода» и установил пакет анализатора, который добавил новый пакет NuGet.

NuGet packages

Я думал, что было бы все, что мне нужно было сделать, чтобы получить исправление, но я думаю, что нет. Чего мне еще не хватает? (Если это имеет значение, я использую VS 2019)

Прежде чем вы отсылаете меня к сообщению от Mar c Gravell , давайте предположим, что в моей ситуации мне нужен атрибут Serializable , Меня больше интересует, почему я до сих пор получаю его, если он предположительно исправлен?

...