Поделиться через


Managed Extensibility Framework в редакторе

Редактор создается с использованием управляемых компонентов .NET Framework расширяемости (MEF). Можно создавать собственные компоненты MEF, чтобы расширить редактор, а код может использовать компоненты редактора.

Общие сведения об управляемой расширяемости .NET Framework

MEF библиотека .NET, которая позволяет добавлять и изменять функции приложения или компонента, подчиняются модели программирования MEF. Редактор Visual Studio и обеспечить использование частей MEF и компонентов.

MEF содержится в сборке System.ComponentModel.Composition.dll версии 4 платформы .NET Framework.

Дополнительные сведения о MEF см. в разделе Managed Extensibility Framework (MEF).

Компонент части и контейнеров композиций

Компонентная часть класса или члена класса, который может сделать один (или оба) из из следующих действий:

  • Используйте другой компонент

  • Используйте другим компонентом

Например, рассмотрим приложение покупки с компонентом ввода заказа, доступность сведений о продуктах, зависит от обеспечила компонентом складе хранилища. В терминах MEF, часть инвентаризации могут Экспорт доступность сведений о продуктах и часть ввода заказа могут импорт данные. Часть ввода заказа и часть складе не должны знать о связи " один другого; контейнер композиции предоставляться ведущим приложением () отвечают для поддержания набора экспортов и включение экспорты и ввозы.

Контейнер композиции CompositionContainerобычно имеет основным приложением. Контейнер композиции поддерживает a каталог экспортированных компонентов частей.

Импортирование и экспортирование компонентов части

Можно экспортировать какие-либо возможности, пока он реализуется как открытый класс или открытый член класса (свойство или метод.) Не следует вывести свою часть из компонентов ComposablePart. Вместо этого необходимо добавить a ExportAttribute атрибут к классу или члену класса, который необходимо экспортировать. Этот атрибут определяет Контракт компонент, что другой часть может импортировать в функции.

Контракт экспорта

ExportAttribute определяет сущность (класс, интерфейс или структуру), экспортировать. Обычно атрибут экспорта принимает параметр, указывающий тип экспорта.

[Export(typeof(ContentTypeDefinition))]
class TestContentTypeDefinition : ContentTypeDefinition {   }

По умолчанию ExportAttribute атрибут определяет контракт, тип экспортирования классов.

[Export]
[Name("Structure")]
[Order(After = "Selection", Before = "Text")]
class TestAdornmentLayerDefinition : AdornmentLayerDefinition {   }

В этом примере значение по умолчанию [Export] атрибут аналогичен [Export(typeof(TestAdornmentLayerDefinition))].

Можно также экспортировать свойство или метод, как показано в следующем примере.

[Export]
[Name("Scarlet")]
[Order(After = "Selection", Before = "Text")]
public AdornmentLayerDefinition scarletLayerDefinition;

Импортировать экспорт MEF

Если необходимо использовать экспорт MEF, необходимо знать тип контракта (обычно) которым он был экспортирован и adding a ImportAttribute атрибут, имеющий значение. По умолчанию атрибут импорта, который принимает один параметр типа класса, он изменяется. Следующие строки кода импортируют IClassificationTypeRegistryService этот тип.

[Import]
internal IClassificationTypeRegistryService ClassificationRegistry;

Получение возможности редактора компонентов из частей MEF

Если существующий код является частью компонент MEF можно использовать метаданные MEF позволяет использовать части редактора компонентов.

Использовать функции редактора компонентов из частей MEF

  1. Добавьте ссылки на System.Composition.ComponentModel.dll, который находится в глобальном кэше сборок (gac) и сборкам редактора.

  2. Добавьте соответствующее использование выписки.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text;
    
  3. Добавление [Import] атрибут для интерфейса службы, следующим образом.

    [Import]
    ITextBufferFactoryService textBufferService;
    
  4. Если получено службу, можно использовать один из его компонентов.

  5. При компилировали поместите его в сборку. \ Common7 \ ide \ \ папку компоненты установки Visual Studio.

См. также

Основные понятия

Точки расширения редактора