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

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

Спасибо за уделенное время.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
2 174
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

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

mattlant 24.09.2008 16:53

Я давно не использовал Resharper, поэтому, возможно, думаю о функции генерации кода Generate Properties (jetbrains.com/resharper/documentation/help20/AdvEditing/…)

ckramer 01.10.2008 07:26
Ответ принят как подходящий

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

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

public string Name { get; private set; }

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

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

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

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