Есть ли способ изменить порядок конструкторов, перечисленных в IntelliSense в Visual Studio?

Я определил класс с несколькими конструкторами, чтобы базовые интерфейсы были неизменными после создания экземпляра объекта. Я хотел бы, чтобы один из конструкторов был конструктором по умолчанию, когда пользователь вводит следующее в Visual Studio:

var obj = new MyClass(

Dim obj As New MyClass(

В настоящее время, когда я запускаю экземпляр объекта, конструкторы не отображаются (в Visual Studio IntelliSense) в том порядке, в котором я объявлял их в своем классе. Есть ли способ разметки моих конструкторов, чтобы их методы отображались в определенном порядке во время создания экземпляра в Visual Studio IntelliSense?

Ответ 1

В Visual Studio Intellisense нет способа контролировать упорядочение. Если у вас есть несколько конструкторов (или методов), ваш единственный реальный контроль в терминах intellisense заключается в использовании EditorBrowsable с соответствующим EditorBrowsableState, Это позволяет скрыть конструктор (или метод) в intellisense или отобразить его только в "расширенном" режиме, но не позволяет изменять их порядок.

Однако в этой ситуации, если вы нацеливаете .NET 4, я бы рекомендовал рассмотреть использование одного конструктора и воспользоваться named и необязательным аргументы.

Ответ 2

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

ComponentModel.EditorBrowsable( ComponentModel.EditorBrowsableState.Advanced ) ComponentModel.EditorBrowsable( ComponentModel.EditorBrowsableState.Never )

Ответ 3

Я уверен, что то, о чем вы просите, невозможно. Лучше всего добавить свои конструкторы в XML-комментарии, которые будут использоваться для заполнения intellisense в VS. Это даст пользователю подробный intellisense о том, какие конструкторы по умолчанию и т.д.

Редакция: я уверен, что VB.NET заказывает конструкторы в порядке их присутствия в объявлении класса.

Вы должны помнить, что Intellisense не является признаком языка, а редактора. У вас не будет функций, специфичных для IDE, встроенных в язык, потому что другие редакторы могут использоваться для написания кода. Написание кода для написания кода не соответствует значению.

Ответ 4

Вы всегда можете использовать модель Factory и сделать конструктор защищенным для каждого метода. Однако я передаю Reed Copsey ответ. Однако, если .NET 4.0 не является вариантом, это может быть альтернативой.