Как создать параметр редактора в новом расширении редактора VS2010

список точек расширения для VS2010 Редактор упоминает о создании EditorOptionDefinitions вместе с небольшим образцом. Когда я пытаюсь сделать это, я не могу найти параметры в пользовательском интерфейсе VS2010. Как их создать, чтобы они отображались в пользовательском интерфейсе?


person Mike Minutillo    schedule 06.02.2010    source источник
comment
Пожалуйста, уделяйте больше внимания выбору тегов. 'vs2010' - это плохо.   -  person Joel Coehoorn    schedule 08.02.2010


Ответы (1)


Чтобы определить новый параметр редактора в Vs2010, вам необходимо сделать следующее.

  1. Создайте класс, производный от EditorOPtionDefinition или EditorOptionDefinition<T>
  2. Добавьте экспорт EditorOptionDefinition.
  3. Убедитесь, что сборка, в которой это определено, указана как компонент MEF.

Пример

[Export(typeof(EditorOptionDefinition))]
public sealed class SomeNewOption : EditorOptionDefinition<string> {
  public override Default { get ... } 
  public override EditorOptionKey<string> Key { get ... }
}
person JaredPar    schedule 06.02.2010
comment
ХОРОШО. А что потом? Что это на самом деле делает? Если я хочу, чтобы пользователь установил значение или получил значение, которое установил пользователь, что мне на самом деле нужно сделать? Я предполагаю, что мне нужно создать свой собственный пользовательский интерфейс для этого, но это не ясно. - person Mike Minutillo; 06.02.2010
comment
@Wolfbyte, эти параметры действительно полезны только для других расширений. Если вы хотите иметь пользовательский интерфейс, вам действительно нужно создать его самостоятельно. - person JaredPar; 06.02.2010
comment
@JaredPar Спасибо за ваш ответ. Итак, экспорт этого класса обеспечивает сохранение параметров в Visual Studio или что-то в этом роде? Я изо всех сил пытаюсь понять, ПОЧЕМУ я хочу создать один из них и экспортировать его. Кроме того, ваш ответ правильный, поэтому я отмечаю его так. - person Mike Minutillo; 06.02.2010
comment
@Wolfbyte, я не уверен в угле сохранения (я не верю, что они есть по умолчанию). Цель этого класса — предоставить настройки, которые могут быть полезны для других расширений. Например, редактор экспортирует такие элементы, как символ NewLine, TabSize, DisplayUrlsAsHyperLinks. - person JaredPar; 06.02.2010
comment
@JaredPar Итак, чтобы использовать эти параметры, которые определяют другие, нам нужно [ImportMany] EditorOptionDefinition [] Options? Я действительно не понимаю, что предоставляет этот класс, поскольку я думаю, что могу экспортировать строку или логическое значение. Я полагаю, это потому, что значение параметра может измениться, и поэтому вам нужно экспортировать для него контейнер, а не само значение. - person Mike Minutillo; 07.02.2010
comment
Чтобы использовать их, вы [Import] и IEditorOptionsFactoryService получаете параметры для определенного буфера или представления (или глобальные параметры), или используете ITextView.Options для параметров, специфичных для представления. - person Noah Richards; 14.02.2010