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

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

var obj = new MyClass(

Dim obj As New MyClass(

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

13
задан John Saunders 2 August 2010 в 20:11
поделиться

4 ответа

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

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

13
ответ дан 1 December 2019 в 23:13
поделиться

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

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

4
ответ дан 1 December 2019 в 23:13
поделиться

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

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

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

2
ответ дан 1 December 2019 в 23:13
поделиться

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

0
ответ дан 1 December 2019 в 23:13
поделиться