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

Я использую этот класс 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 решит переместить поля, и это нарушит код.

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

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

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

1 Ответ

0 голосов
/ 09 ноября 2018

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

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

Шаг 1: enter image description here

Шаг 2: enter image description here

Шаг 3: enter image description here

Шаг 4: enter image description here

Шаг 5: enter image description here

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

...