2012-03-13 4 views
3

Можно ли просто ввести первые буквы статического члена класса, а затем (по волшебному ярлыку) в списке завершения перечислены все возможные class.member записей?Авто Завершить член другого класса


Более подробное объяснение:

У меня есть 15 классов в виде:

class AClass 
{ 
    public static readonly string Volumeclass = "abcd"; 
    //... other members 
} 

class AnotherClass 
{ 
    public static readonly string Volumeclass = "xyz"; 
    //... other members 
} 

Когда я хочу, чтобы получить доступ к этим членам, которые я хочу ввести Volumeclass и хотите получить список:

  • AClass.Volumcllass
  • AnotherClass.Volumeclass

с помощью интеллекта. Поэтому мне нужно выбрать только правильный символ, а не запомнить правильное имя класса.

Я пробовал Smart Completion, но он не работал таким образом.

+0

Я так не верю. Не зная больше о вашем проекте или почему вам нужно его структурировать, трудно понять, может ли быть более жизнеспособным другой подход - например, ссылочный класс Enum или константы. –

+0

Эти классы вложены? Если да, вы можете попробовать это с отражением. – Vinicius

+0

Я не могу сказать, что я знаю о такой функции (ReSharper * имеет * это знание при использовании Go To Member). Возможно, вы могли бы [предложить его ReSharper] (http://youtrack.jetbrains.com/issues/RSRP) в качестве нового типа завершения? –

ответ

3

Я не могу сказать, что знаю такой ярлык. Очевидно, что если вы используете навигацию Go To Symbol (IntelliJ: Ctrl-Shift-Alt-T или Visual Studio: Ctrl-Shift-Alt-T), вы можете получить список всех VolumeClass свойств в вашем коде:

http://i.imgur.com/YP7nd.png

Но это не то, что вы хотите. Самое близкое, что я мог бы предложить, это использовать завершение Import Symbol (Ctrl - Alt - Пространство), а затем введите первые буквы этого типа. Он отобразит все доступные на глобальном уровне типы и при необходимости импортирует соответствующую директиву using.

Редактировать Другая идея состоит в том, чтобы произвести это с ReSharper живой шаблон, который позволит вам создавать заявление на основе первых букв:

  1. Перейдите в ReSharper - Шаблоны Explorer (в ReSharper 6)
  2. Under Live Templates вкладки, нажмите кнопкунового шаблона
  3. Дайте имя для ярлыка, например, vc. При желании напишите описание.
  4. В области основного текста, тип: $prefix$.Volumeclass
  5. Сохранить и выйти из шаблонов Проводник

Теперь вы можете ввести код vc, а затем имя класса, который обладает свойством.

Надеюсь, что это поможет.

+0

Хорошо. Вы имеете в виду * Go To Symbol * навигацию, как показано на скриншоте, не так ли? Это, по крайней мере, хорошее обходное решение, потому что я получаю список всех возможных классов. Затем я нажимаю * ESC *, а затем вводим запоминающееся имя класса. – brgerner

+0

Эмм, конечно, извините, я исправлю ответ! Благодаря :) –

0

Вы должны ввести имя класса первого

AClass.<now the list of static members appears> 

Заметим, что существуют десятки тысяч классов в библиотеке классов .NET Framework. Вы хотите, чтобы миллионы участников появлялись автоматически?

1

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

Я бы не реструктурировал вашу иерархию пространства имен именно для этой цели, но это может быть хорошим вариантом, если классы должны логически сгруппироваться. Если имя пространства имен длинное, вы можете дополнительно добавить using alias directive (например, using Prods = MyCompany.MyProject.Products;)

Смежные вопросы