Visual Studio 2005 – провести рефакторинг нескольких атрибутов одновременно?

StackOverflow https://stackoverflow.com/questions/126894

  •  02-07-2019
  •  | 
  •  

Вопрос

Я использую правую кнопку>Рефакторинг>Инкапсулировать поле, чтобы каждый раз иметь свой метод доступа.Проблема в том, что когда я создаю новый класс, у меня может быть более 10 атрибутов, и делать каждый метод доступа 1 к 1 долго.Есть ли более быстрый способ их создания?

Спасибо за ваше время.

Это было полезно?

Решение

Если вы создаете новый класс, вы можете использовать фрагменты кода для создания инкапсулированных полей вместо того, чтобы сначала создавать поле, а затем инкапсулировать его.В C# ярлыками являются prop и propg (для частного набора).

Другие советы

Похоже, что рефакторинг, встроенный в студию, поддерживает одновременно только одно поле для рефакторинга Encapsulate Field.Рефакторинг Про!(http://www.devexpress.com/Products/Visual_Studio_Add-in/Refactoring/) или Решарпер (http://www.jetbrains.com/resharper/index.html) оба поддерживают инкапсуляцию нескольких полей.

Возможно, вам удастся проявить фантазию и собрать макрос, который позволит вам выбирать несколько полей, а затем инкапсулировать каждое из них, но макросы VS - это не мой шарик воска.

В C# 3.0 новый синтаксис свойств избавляет вас от необходимости объявлять поле и реализовывать методы доступа.Их синтаксис выглядит так:

public string Name { get; private set; }

Также я хочу отметить, что для внутренних членов тривиальные свойства имеют очень мало значения по сравнению с внутренними полями, поскольку у вас есть контроль как над вызывающим объектом, так и над реализацией — вы можете переключиться на свойство в будущем без особых усилий.

Даже для публичных участников думать, что вы можете защитить свой код от будущего, просто сделав общедоступные поля данных в свойствах, является близорукостью.По крайней мере, вам следует добавить косвенность вокруг вашего конструктора (с помощью фабрики) и вашего интерфейса (с помощью интерфейса).Это также требует глубокого размышления над тем, как потребители вашего API будут ожидать от вас работы с несколькими версиями.Это действительно сложно, и, по моему мнению, это стоит делать только в том случае, если вы являетесь поставщиком API.

В моем коде основная причина, по которой я использую свойства, заключается в том, что многие инструменты, использующие отражение, просматривают свойства, а не поля.Я думаю, что это ошибка, но именно так работают инструменты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top