Могу ли я убедиться, что resharper не меняет порядок полей в этом классе?

Я использую этот класс NetResource для отправки файлов на сетевой диск, и это выглядит так:

[StructLayout(LayoutKind.Sequential)]
public class NetResource
{
    public ResourceScope Scope;
    public ResourceType ResourceType;
    public ResourceDisplayType DisplayType;
    public int Usage;
    public string LocalName;
    public string RemoteName;
    public string Comment;
    public string Provider;
}

Теперь очень важно, чтобы порядок этих полей оставался таким же, как намекнул StructLayout приписывать.

Тем не менее, когда кто-то запускает очистку с помощью резарпера, он решает переместить поля, и это нарушит код.

Есть ли способ сказать Рехсарперу не связываться с ним? Я чувствую, что если я не смогу этого сделать, кто-то в конце концов нарушит код и не знает, где искать.

Но посредственным решением, которое я считаю, было бы создание юнит-теста, который мог бы проверить, есть ли расположение, как ожидалось.

Изменить: я видел этот ответ, но он устарел и требует обновления настроек резче. Я также не буду гарантирован, что коллеги используют эту настройку резкости. Я ищу способ добавить его в код, так же, как вы можете сделать // ReSharper disable once InconsistentNaming

1 ответ

Я вижу пару решений здесь:

  • Вы можете пометить класс NoReorderAttribute из JetBrains.Annotations (есть несколько способов добавить их в проект). Затем ReSharper прекратит переупорядочивать элементы внутри отмеченного объекта кода.
  • В основном это уже упомянутый ответ, я покажу вам, как получить то же самое в последних сборках ReSharper. Все, что вам нужно, это добавить "System.Runtime.InteropServices.StructLayoutAttribute" в шаблон "Не переупорядочиваемые типы" в ReSharper | Варианты | Редактирование кода | C# | Макет файла.

Шаг 1: введите описание изображения здесь

Шаг 2: введите описание изображения здесь

Шаг 3: введите описание изображения здесь

Шаг 4: введите описание изображения здесь

Шаг 5: введите описание изображения здесь

Чтобы ваши коллеги использовали те же настройки в ReSharper, сохраните это изменение в общем слое команды разработчиков (Save To в нижней части диалога параметров). Затем, если кто-либо из ваших коллег откроет решение, ReSharper автоматически использует настройки этого слоя без дополнительных действий.

Другие вопросы по тегам