Compartir a través de


Managed extensibility framework en el editor

El editor se compila utilizando los componentes administrados del marco (MEF) de extensibilidad de. Puede compilar dispone los componentes MEF para extender el editor, y el código puede utilizar los componentes del editor también.

Información general de managed extensibility framework

MEF es una biblioteca de .NET que permite agregar y modificar características de una aplicación o componente que sigue el modelo de programación MEF. El editor de Visual Studio puede proporcionar y utilizar elementos MEF.

Contienen MEF en el ensamblado.NET Framework versión 4 Beta 2 System.ComponentModel.Composition.dll.

Para obtener más información sobre MEF, vea Managed Extensibility Framework (MEF).

Componente Parte y contenedores de Composición

Un elemento es una clase o un miembro de una clase que puede tener una (o ambos) siguiente:

  • Utilice otro componente

  • Utilizan otro componente

Por ejemplo, considere una aplicación de compras que tiene un componente de entrada de pedidos que depende de los datos de productos de disponibilidad proporcionados por un componente de inventario del almacén de datos. En términos de MEF, parte de inventario puede exportar de los datos de producto disponibilidad, y la parte de la entrada de orden puede importar los datos. La parte de la entrada de orden y la parte del inventario no tienen que saber sobre sí; el contenedor de composición (proporcionado por la aplicación host) es responsable de mantener el conjunto de exportaciones, y resolver las exportaciones e importaciones.

El contenedor de composición, CompositionContainer, es propiedad normalmente por el host. El contenedor de composición mantiene un catálogo de partes exportadas.

Exportar e importar el componente Parte

Puede exportar cualquier funcionalidad, mientras se implementa como una clase pública o miembro público de una clase (propiedad o método). No tiene que derivar la parte de ComposablePart. En su lugar, debe agregar un atributo de ExportAttribute a la clase o miembro de clase que desea exportar. Este atributo especifica el contrato por el que otra parte puede importar la funcionalidad.

El contrato de exportación

ExportAttribute define la entidad (clase, interfaz, o estructura) se exporte que. Normalmente, el atributo export toma un parámetro que especifica el tipo de exportación.

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

De forma predeterminada, el atributo de ExportAttribute define un contrato que es el tipo de la clase que exporta.

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

En el ejemplo, el atributo de [Export] predeterminado es equivalente a [Export(typeof(TestAdornmentLayerDefinition))].

También puede exportar una propiedad o un método, como se muestra en el ejemplo siguiente.

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

Importar una exportación MEF

Si desea utilizar una exportación MEF, debe conocer el contrato (normalmente el tipo) por que se había exportado, y agregar un atributo de ImportAttribute que tiene ese valor. De forma predeterminada, el atributo import toma un parámetro, que es el tipo de clase que modifica. las siguientes líneas de código importan el tipo de IClassificationTypeRegistryService .

[Import]
internal IClassificationTypeRegistryService ClassificationRegistry;

Obtener la funcionalidad del editor de un componente Parte MEF

Si el código existente es una parte MEF, puede utilizar metadatos MEF para utilizar partes del editor.

Para utilizar la funcionalidad del editor de una parte MEF

  1. Agregue referencias a System.Composition.ComponentModel.dll, que está en la caché global de (GAC) ensamblados, y los ensamblados del editor.

  2. Agregue el pertinente mediante instrucciones.

    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text;
    
  3. Agregue el atributo de [Import] a la interfaz de servicio, como sigue.

    [Import]
    ITextBufferFactoryService textBufferService;
    
  4. Cuando se ha obtenido el servicio, puede utilizar de sus componentes.

  5. Cuando haya compilado el ensamblado, póngalo en. instalación \Common7\IDE\Components\ folder of your Visual Studio.

Vea también

Conceptos

Puntos de extensión del editor