Comparteix a través de


CompositionContainer Clase

Definición

Administra la composición de elementos.

public ref class CompositionContainer : System::ComponentModel::Composition::Hosting::ExportProvider, IDisposable, System::ComponentModel::Composition::ICompositionService
public class CompositionContainer : System.ComponentModel.Composition.Hosting.ExportProvider, IDisposable, System.ComponentModel.Composition.ICompositionService
type CompositionContainer = class
    inherit ExportProvider
    interface ICompositionService
    interface IDisposable
Public Class CompositionContainer
Inherits ExportProvider
Implements ICompositionService, IDisposable
Herencia
CompositionContainer
Implementaciones

Ejemplos

En el ejemplo siguiente, un CompositionContainer objeto se inicializa con un catálogo y se usa para rellenar las importaciones de un elemento. En este ejemplo se usa el modelo de programación con atributos.

[Export]
class MyAddin
{
    public String myData { get { return "The data!"; } }
}

class MyProgram
{
    [Import]
    public MyAddin myAddin { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        AggregateCatalog catalog = new AggregateCatalog();
        catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyAddin).Assembly));
        CompositionContainer _container = new CompositionContainer(catalog);
        MyProgram myProgram = new MyProgram();
        _container.SatisfyImportsOnce(myProgram);
        Console.WriteLine(myProgram.myAddin.myData);
        Console.ReadLine();

        _container.Dispose();
    }
}
<Export()>
Public Class MyAddin
    Public ReadOnly Property theData As String
        Get
            Return "The Data!"
        End Get
    End Property
End Class

Public Class MyProgam
    Private _MyAddin As MyAddin

    <Import()>
    Public Property MyAddinProperty As MyAddin
        Get
            Return _MyAddin
        End Get
        Set(ByVal value As MyAddin)
            _MyAddin = value
        End Set
    End Property

End Class



Sub Main()
    Dim catalog As AggregateCatalog = New AggregateCatalog()
    catalog.Catalogs.Add(New AssemblyCatalog(GetType(MyAddin).Assembly))
    Dim container As CompositionContainer = New CompositionContainer(catalog)
    Dim theProgam As MyProgam = New MyProgam()
    container.SatisfyImportsOnce(theProgam)
    Console.WriteLine(theProgam.MyAddinProperty.theData)
    Console.ReadLine()

    container.Dispose()

End Sub

Comentarios

Un CompositionContainer objeto sirve dos propósitos principales en una aplicación. En primer lugar, realiza un seguimiento de las partes que están disponibles para la composición y cuáles son sus dependencias y realiza la composición cada vez que cambia el conjunto de elementos disponibles. En segundo lugar, proporciona los métodos por los que la aplicación obtiene instancias de partes compuestas o rellena las dependencias de un elemento que se puede componer.

Importante

Este tipo implementa la interfaz IDisposable. Cuando haya terminado de utilizar el tipo, debe desecharlo directa o indirectamente. Para eliminar el tipo directamente, llame a su método Dispose en un bloque try/catch. Para deshacerse de él indirectamente, use una construcción de lenguaje como using (en C#) o Using (en Visual Basic). Para más información, vea la sección "Uso de objetos que implementan IDisposable" en el tema de la interfaz IDisposable.

Las partes se pueden poner a disposición del contenedor directamente o a través de la Catalog propiedad . Todas las partes que se pueden detectar en esto ComposablePartCatalog están disponibles para el contenedor para satisfacer las importaciones, junto con las partes agregadas directamente.

El Compose método permite agregar elementos de instancia a un contenedor existente. Suponiendo que la composición es correcta, estas partes tendrán sus importaciones llenas de piezas recuperadas del contenedor y sus exportaciones estarán disponibles para otras partes. Las importaciones marcadas como recomposibles se registrarán para cambiar la posición.

El SatisfyImportsOnce método permite que una parte tenga sus importaciones rellenadas sin agregarse al contenedor. Si la composición se realiza correctamente, se rellenarán las importaciones de la pieza, pero las exportaciones de la parte no estarán disponibles para otras partes y no se registrará ninguna importación para la reposición.

CompositionContainer Los objetos siempre deben eliminarse. Cuando se llama al Dispose método , el CompositionContainer objeto también elimina todas las partes que ha creado.

Un CompositionContainer objeto al que se puede tener acceso desde varios subprocesos debe construirse con el isThreadSafe parámetro establecido trueen , mediante el CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) constructor . El rendimiento será ligeramente más lento cuando isThreadSafe sea true, por lo que se recomienda establecer este parámetro false en en escenarios de un solo subproceso. De manera predeterminada, es false.

Advertencia

Un CompositionContainer no debe importarse nunca o una parte que tenga una referencia a él. Esta referencia podría permitir que una parte que no es de confianza obtenga acceso a todas las partes del contenedor.

Constructores

CompositionContainer()

Inicializa una nueva instancia de la clase CompositionContainer.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con el catálogo, el modo seguro para subprocesos y los proveedores de exportación especificados.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con el catálogo, opciones y los proveedores de exportación especificados.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con el catálogo y los proveedores de exportación especificados.

CompositionContainer(CompositionOptions, ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con los proveedores de exportación y las opciones especificados.

CompositionContainer(ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con los proveedores de exportación especificados.

Propiedades

Catalog

Obtiene el objeto ComposablePartCatalog que proporciona al contenedor acceso a los objetos Export.

Providers

Obtiene los proveedores de exportación que proporcionan al contenedor acceso a objetos ComposablePartCatalog adicionales.

Métodos

Compose(CompositionBatch)

Agrega o quita las partes del CompositionBatch especificado del contenedor y ejecuta la composición.

Dispose()

Libera todos los recursos usados por la instancia actual de la clase CompositionContainer.

Dispose(Boolean)

Libera los recursos no administrados que usa CompositionContainer y, de forma opcional, libera los recursos administrados.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetExport<T,TMetadataView>()

Devuelve la exportación con el nombre de contrato derivado del parámetro de tipo especificado. Si no hay exactamente una exportación coincidente, se iniciará una excepción.

(Heredado de ExportProvider)
GetExport<T,TMetadataView>(String)

Devuelve la exportación con el nombre de contrato especificado. Si no hay exactamente una exportación coincidente, se iniciará una excepción.

(Heredado de ExportProvider)
GetExport<T>()

Devuelve la exportación con el nombre de contrato derivado del parámetro de tipo especificado. Si no hay exactamente una exportación coincidente, se iniciará una excepción.

(Heredado de ExportProvider)
GetExport<T>(String)

Devuelve la exportación con el nombre de contrato especificado. Si no hay exactamente una exportación coincidente, se iniciará una excepción.

(Heredado de ExportProvider)
GetExportedValue<T>()

Devuelve el objeto exportado con el nombre de contrato derivado del parámetro de tipo especificado. Si no hay exactamente un objeto exportado coincidente, se iniciará una excepción.

(Heredado de ExportProvider)
GetExportedValue<T>(String)

Devuelve el objeto exportado con el nombre de contrato especificado. Si no hay exactamente un objeto exportado coincidente, se iniciará una excepción.

(Heredado de ExportProvider)
GetExportedValueOrDefault<T>()

Obtiene el objeto exportado con el nombre de contrato derivado del parámetro de tipo especificado o el valor predeterminado del tipo especificado, o bien inicia una excepción si hay más de un objeto exportado coincidente.

(Heredado de ExportProvider)
GetExportedValueOrDefault<T>(String)

Obtiene el objeto exportado con el nombre de contrato especificado o el valor predeterminado del tipo especificado, o bien inicia una excepción si hay más de un objeto exportado coincidente.

(Heredado de ExportProvider)
GetExportedValues<T>()

Obtiene todos los objetos exportados con el nombre de contrato derivado del parámetro de tipo especificado.

(Heredado de ExportProvider)
GetExportedValues<T>(String)

Obtiene todos los objetos exportados con el nombre de contrato especificado.

(Heredado de ExportProvider)
GetExports(ImportDefinition)

Obtiene todas las exportaciones que cumplen las condiciones de la definición de importación especificada.

(Heredado de ExportProvider)
GetExports(ImportDefinition, AtomicComposition)

Obtiene todas las exportaciones que cumplen las condiciones de la definición de importación y la composición especificadas.

(Heredado de ExportProvider)
GetExports(Type, Type, String)

Obtiene todas las exportaciones con el nombre de contrato especificado.

(Heredado de ExportProvider)
GetExports<T,TMetadataView>()

Obtiene todas las exportaciones con el nombre de contrato derivado del parámetro de tipo especificado.

(Heredado de ExportProvider)
GetExports<T,TMetadataView>(String)

Obtiene todas las exportaciones con el nombre de contrato especificado.

(Heredado de ExportProvider)
GetExports<T>()

Obtiene todas las exportaciones con el nombre de contrato derivado del parámetro de tipo especificado.

(Heredado de ExportProvider)
GetExports<T>(String)

Obtiene todas las exportaciones con el nombre de contrato especificado.

(Heredado de ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition)

Devuelve una colección de todas las exportaciones que cumplen las condiciones del objeto ImportDefinition especificado.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnExportsChanged(ExportsChangeEventArgs)

Genera el evento ExportsChanged.

(Heredado de ExportProvider)
OnExportsChanging(ExportsChangeEventArgs)

Genera el evento ExportsChanging.

(Heredado de ExportProvider)
ReleaseExport(Export)

Libera el objeto Export especificado de CompositionContainer.

ReleaseExport<T>(Lazy<T>)

Quita de la composición la exportación especificada y libera sus recursos si es posible.

ReleaseExports(IEnumerable<Export>)

Libera un conjunto de objetos Export de CompositionContainer.

ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>)

Quita de la composición una colección de exportaciones y libera sus recursos si es posible.

ReleaseExports<T>(IEnumerable<Lazy<T>>)

Quita de la composición una colección de exportaciones y libera sus recursos si es posible.

SatisfyImportsOnce(ComposablePart)

Satisface las importaciones del objeto ComposablePart especificado sin registrarlo para la recomposición.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

Obtiene todas las exportaciones que cumplen las condiciones de la importación especificada.

(Heredado de ExportProvider)

Eventos

ExportsChanged

Se produce cuando cambian las exportaciones en la clase ExportProvider.

(Heredado de ExportProvider)
ExportsChanging

Se produce cuando cambian las exportaciones especificadas.

(Heredado de ExportProvider)

Métodos de extensión

ComposeExportedValue<T>(CompositionContainer, T)

Crea un elemento a partir del valor especificado y lo compone en el contenedor de composición especificado.

ComposeExportedValue<T>(CompositionContainer, String, T)

Crea un elemento a partir del objeto especificado bajo el nombre de contrato indicado y lo compone en el contenedor de composición especificado.

ComposeParts(CompositionContainer, Object[])

Crea elementos a partir de una matriz de objetos con atributos y los compone en el contenedor de composición especificado.

SatisfyImportsOnce(ICompositionService, Object)

Crea el elemento especificado usando el servicio de composición indicado, con la recomposición deshabilitada.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

Constituye la parte especificada mediante el servicio especificado de composición, con la recomposición deshabilitada y utilizando el contexto especificado de reflexión.

Se aplica a

Consulte también