Compartir por


CompositionContainer Clase

Definición

Administra la composición de las partes.

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 una pieza. 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 para dos propósitos principales en una aplicación. En primer lugar, realiza un seguimiento de qué partes 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 IDisposable interfaz . 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 eliminarlo indirectamente, use una construcción de lenguaje como using (en C#) o Using (en Visual Basic). Para obtener más información, vea la sección "Using an Object that Implements IDisposable" (Usar un objeto que implementa IDisposable) en el tema de interfaz IDisposable .

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

El Compose método permite agregar elementos con instancias a un contenedor existente. Suponiendo que la composición es correcta, estas partes tendrán sus importaciones rellenadas con piezas recuperadas del contenedor y sus exportaciones estarán disponibles para otras partes. Las importaciones marcadas como recomposables 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, las importaciones de la pieza se rellenarán, pero las exportaciones de la parte no estarán disponibles para otras partes y no se registrará ninguna importación para cambiar la posición.

CompositionContainer Los objetos siempre deben desecharse. 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. El valor predeterminado 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

Nombre Description
CompositionContainer()

Inicializa una nueva instancia de la clase CompositionContainer.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[])

Inicializa una nueva instancia de la CompositionContainer clase 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 CompositionContainer clase con los proveedores de catálogo, opciones y exportación especificados.

CompositionContainer(ComposablePartCatalog, ExportProvider[])

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

CompositionContainer(CompositionOptions, ExportProvider[])

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

CompositionContainer(ExportProvider[])

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

Propiedades

Nombre Description
Catalog

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

Providers

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

Métodos

Nombre Description
Compose(CompositionBatch)

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

Dispose()

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

Dispose(Boolean)

Libera los recursos no administrados utilizados por CompositionContainer y, opcionalmente, libera los recursos administrados.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

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

Devuelve la exportación con el nombre del contrato derivado del parámetro de tipo especificado. Si no hay exactamente una exportación coincidente, se produce 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 produce una excepción.

(Heredado de ExportProvider)
GetExport<T>()

Devuelve la exportación con el nombre del contrato derivado del parámetro de tipo especificado. Si no hay exactamente una exportación coincidente, se produce 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 produce una excepción.

(Heredado de ExportProvider)
GetExportedValue<T>()

Devuelve el objeto exportado con el nombre del contrato derivado del parámetro de tipo especificado. Si no hay exactamente un objeto exportado coincidente, se produce 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 produce una excepción.

(Heredado de ExportProvider)
GetExportedValueOrDefault<T>()

Obtiene el objeto exportado con el nombre del contrato derivado del parámetro de tipo especificado o el valor predeterminado para el tipo especificado, o produce 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 para el tipo especificado, o produce 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 del 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, AtomicComposition)

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

(Heredado de ExportProvider)
GetExports(ImportDefinition)

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

(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 del 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 del 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 coinciden con las condiciones del objeto especificado ImportDefinition .

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(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 especificado Export de .CompositionContainer

ReleaseExport<T>(Lazy<T>)

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

ReleaseExports(IEnumerable<Export>)

Libera un conjunto de Export objetos de .CompositionContainer

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

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

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

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

SatisfyImportsOnce(ComposablePart)

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

ToString()

Devuelve una cadena que representa el objeto actual.

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

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

(Heredado de ExportProvider)

Eventos

Nombre Description
ExportsChanged

Se produce cuando las exportaciones del ExportProvider cambio.

(Heredado de ExportProvider)
ExportsChanging

Se produce cuando cambian las exportaciones proporcionadas.

(Heredado de ExportProvider)

Métodos de extensión

Nombre Description
ComposeExportedValue<T>(CompositionContainer, String, T)

Crea una parte del objeto especificado bajo el nombre de contrato especificado y lo compone en el contenedor de composición especificado.

ComposeExportedValue<T>(CompositionContainer, T)

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

ComposeParts(CompositionContainer, Object[])

Crea partes que se pueden componer a partir de una matriz de objetos con atributos y las compone en el contenedor de composición especificado.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext)

Compone la parte especificada mediante el servicio de composición especificado, con la reposición deshabilitada y usando el contexto de reflexión especificado.

SatisfyImportsOnce(ICompositionService, Object)

Compone la parte especificada mediante el servicio de composición especificado, con la recomposición deshabilitada.

Se aplica a

Consulte también