Как остановить Resharper от удаления [CanBeNull] при вводе "?"в конце имени ссылочного типа? - PullRequest
2 голосов
/ 21 ноября 2019

Я выполняю процесс преобразования моих проектов .Net 4.8 (не Core!) В новую функцию C # 8 «обнуляемая ссылка».

Для этого я изменяю каждый файл исходного кодав свою очередь, добавив #nullable enable и украсив все пустые ссылки суффиксом ?. Это позволяет мне постепенно преобразовывать весь мой код для использования новой функции.

Теперь рассмотрим следующий метод в исходном файле с указанным #nullable enable:

#nullable enable

[CanBeNull] public static string Test([CanBeNull] string arg)
{
    return arg;
}

Если явведите '?'после любого из объявлений string (для использования новой функции N # Nullable) в C # 8 Resharper удаляет атрибут [CanBeNull]:

public static string? Test(string? arg)
{
    return arg;
}

Однако, если этот атрибут удален, Resharper делаетне предупреждать меня о возможном использовании нулевой ссылки в других исходных файлах. (Это не будет проблемой, если в всех исходных файлах было указано #nullable enable, но поскольку я конвертирую файлы по частям, есть много файлов, для которых еще не указан #nullable enable,поэтому компилятор не предупредит меня о возможном использовании нулевой ссылки - и Resharper тоже не будет, потому что [CanBeNull] был удален.)

Поэтому мой вопрос таков:

Есть ли способ остановить Resharper от удаления атрибута [CanBeNull], когда я набираю ? в конце имени ссылочного типа?

Я искал все параметры Resharper, но у меня нетНе удалось найти один для этого.

1 Ответ

1 голос
/ 22 ноября 2019

Я задал вопрос на форумах поддержки Resharper и получил решение:

https://resharper -support.jetbrains.com / hc / en-us / community / posts / 360006676140-Как-остановить-Resharper-от-удаления-CanBeNull-когда-печатая-в-конце-в-конце-ссылки-тип-имя-

Чтобы исправить это:

  1. Перейдите в Расширения -> Resharper -> Параметры -> Среда -> Поведение редактора -> C #
  2. Найдите и отключите параметр " Аннотировать обнуляемость в '!' / '? 'после имени типа".
  3. Найдите и отключите опцию" Аннотировать обнуляемость в '!' / '?'на других позициях"
...