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





Похоже, что встроенный в Studio рефакторинг поддерживает только одно поле за раз для рефакторинга Encapsulate Field. Refactor Pro! (http://www.devexpress.com/Products/Visual_Studio_Add-in/Refactoring/) или Resharper (http://www.jetbrains.com/resharper/index.html) поддерживают инкапсуляцию нескольких полей.
Возможно, вам удастся придумать и составить макрос, который позволит вам выбрать несколько полей, а затем инкапсулировать каждое из них, но макросы VS - это не мой восковой шарик.
Я давно не использовал Resharper, поэтому, возможно, думаю о функции генерации кода Generate Properties (jetbrains.com/resharper/documentation/help20/AdvEditing/…)
Если вы создаете новый класс, вы можете использовать фрагменты кода для создания инкапсулированных полей вместо того, чтобы сначала создавать поле, а затем инкапсулировать его. В C# ярлыки - это prop и propg (для частного набора).
В C# 3.0 новый синтаксис свойств избавляет вас от необходимости объявлять поле и реализовывать средства доступа. Их синтаксис выглядит так:
public string Name { get; private set; }
Кроме того, я хочу указать, что для внутренних членов тривиальные свойства имеют очень мало значения по сравнению с внутренними полями, поскольку вы контролируете как вызывающий объект, так и реализацию - вы можете переключиться на свойство в будущем, без особых усилий.
Даже для общедоступных участников близоруко думать, что вы можете защитить свой код в будущем, просто сделав общедоступные поля данных в свойствах. По крайней мере, вы должны добавить косвенное обращение к вашему конструктору (с фабрикой) и к вашему интерфейсу (с интерфейсом). Это также требует глубокого понимания того, как потребители вашего API будут ожидать от вас работы с несколькими версиями. Это действительно сложно, и, на мой взгляд, это стоит делать только в том случае, если вы являетесь поставщиком API.
В моем коде основная причина, по которой я использую свойства, заключается в том, что многие инструменты, использующие отражение, смотрят на свойства, но не на поля. Я думаю, что это ошибка, но инструменты работают именно так.
Как сделать так, чтобы решила делать больше, чем по одному за раз? Если я выделю несколько частных полей, опция инкапсуляции будет недоступна.