CompositionContainer CompositionContainer CompositionContainer CompositionContainer Class

Definición

Administra la composición de elementos.Manages the composition of parts.

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
CompositionContainerCompositionContainerCompositionContainerCompositionContainer
Implementaciones

Ejemplos

En el ejemplo siguiente, un CompositionContainer objeto se inicializa con un catálogo y se utiliza para rellenar las importaciones de un elemento.In the following example, a CompositionContainer object is initialized with a catalog and is used to fill the imports of a part. En este ejemplo se usa el modelo de programación con atributos.This example uses the Attributed Programming Model.

[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.A CompositionContainer object serves two major purposes in an application. 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.First, it keeps track of which parts are available for composition and what their dependencies are, and performs composition whenever the set of available parts changes. En segundo lugar, proporciona los métodos por los que la aplicación obtiene instancias de partes compuestas o rellena las dependencias de una parte que admite composición.Second, it provides the methods by which the application gets instances of composed parts or fills the dependencies of a composable part.

Importante

Este tipo implementa la interfaz IDisposable.This type implements the IDisposable interface. Cuando haya terminado de utilizar el tipo, debe desecharlo directa o indirectamente.When you have finished using the type, you should dispose of it either directly or indirectly. Para eliminar el tipo directamente, llame a su método Dispose en un bloque try/catch.To dispose of the type directly, call its Dispose method in a try/catch block. Para deshacerse de él indirectamente, use una construcción de lenguaje como using (en C#) o Using (en Visual Basic).To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). Para más información, vea la sección "Uso de objetos que implementan IDisposable" en el tema de la interfaz IDisposable.For more information, see the "Using an Object that Implements IDisposable" section in the IDisposable interface topic.

Los elementos pueden ponerse a disposición del contenedor, ya sea directamente o Catalog a través de la propiedad.Parts can be made available to the container either directly or through the Catalog property. Todas las partes que se pueden detectar en ComposablePartCatalog esto están disponibles para el contenedor con el fin de llevar a cabo importaciones, junto con cualquier parte agregada directamente.All the parts discoverable in this ComposablePartCatalog are available to the container to fulfill imports, along with any parts added directly.

El Compose método permite agregar partes con instancias a un contenedor existente.The Compose method allows instantiated parts to be added to an existing container. Suponiendo que la composición sea correcta, estas partes tendrán sus importaciones rellenadas con las partes recuperadas del contenedor y sus exportaciones estarán disponibles para otras partes.Assuming composition is successful, these parts will have their imports filled with parts retrieved from the container, and their exports will be available to other parts. Las importaciones marcadas como puede redactarse se registrarán para la recomposición.Imports marked as recomposable will be registered for recomposition.

El SatisfyImportsOnce método permite que un elemento tenga sus importaciones llenas sin agregarse al contenedor.The SatisfyImportsOnce method allows a part to have its imports filled without being added to the container. Si la composición se realiza correctamente, se rellenarán las importaciones del elemento, pero las exportaciones del elemento no estarán disponibles para otras partes y no se registrarán importaciones para la recomposición.If the composition is successful, the part's imports will be filled, but the part's exports will not be available to other parts and no imports will be registered for recomposition.

CompositionContainerlos objetos siempre se deben desechar.CompositionContainer objects should always be disposed. Cuando se llama al CompositionContainer método,elobjetotambiéneliminatodaslaspartesquehacreado.DisposeWhen the Dispose method is called, the CompositionContainer object also disposes all the parts that it has created.

Un CompositionContainer objeto al que se puede tener acceso desde varios subprocesos debe construirse con el true isThreadSafe parámetro establecido en CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) , mediante el constructor.A CompositionContainer object that can be accessed from multiple threads must be constructed with the isThreadSafe parameter set to true, using the CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) constructor. El rendimiento será ligeramente más lento isThreadSafe cuando truesea, por lo que se recomienda establecer este parámetro false en en escenarios de un solo subproceso.Performance will be slightly slower when isThreadSafe is true, so we recommend that you set this parameter to false in single-threaded scenarios. De manera predeterminada, es false.The default is false.

Advertencia

No CompositionContainer debe importarse nunca o una parte que tenga una referencia a él.A CompositionContainer should never import itself, or a part that has a reference to it. Este tipo de referencia podría permitir que una parte que no es de confianza obtenga acceso a todas las partes del contenedor.Such a reference could allow an untrusted part to gain access all the parts in the container.

Constructores

CompositionContainer() CompositionContainer() CompositionContainer() CompositionContainer()

Inicializa una nueva instancia de la clase CompositionContainer.Initializes a new instance of the CompositionContainer class.

CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) 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.Initializes a new instance of the CompositionContainer class with the specified catalog, thread-safe mode, and export providers.

CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con el catálogo, opciones y los proveedores de exportación especificados.Initializes a new instance of the CompositionContainer class with the specified catalog, options, and export providers.

CompositionContainer(ComposablePartCatalog, ExportProvider[]) CompositionContainer(ComposablePartCatalog, ExportProvider[]) CompositionContainer(ComposablePartCatalog, ExportProvider[]) CompositionContainer(ComposablePartCatalog, ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con el catálogo y los proveedores de exportación especificados.Initializes a new instance of the CompositionContainer class with the specified catalog and export providers.

CompositionContainer(CompositionOptions, ExportProvider[]) CompositionContainer(CompositionOptions, ExportProvider[]) CompositionContainer(CompositionOptions, ExportProvider[]) CompositionContainer(CompositionOptions, ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con los proveedores de exportación y las opciones especificados.Initializes a new instance of the CompositionContainer class with the specified export providers and options.

CompositionContainer(ExportProvider[]) CompositionContainer(ExportProvider[]) CompositionContainer(ExportProvider[]) CompositionContainer(ExportProvider[])

Inicializa una nueva instancia de la clase CompositionContainer con los proveedores de exportación especificados.Initializes a new instance of the CompositionContainer class with the specified export providers.

Propiedades

Catalog Catalog Catalog Catalog

Obtiene el objeto ComposablePartCatalog que proporciona al contenedor acceso a los objetos Export.Gets the ComposablePartCatalog that provides the container access to Export objects.

Providers Providers Providers Providers

Obtiene los proveedores de exportación que proporcionan al contenedor acceso a objetos ComposablePartCatalog adicionales.Gets the export providers that provide the container access to additional ComposablePartCatalog objects.

Métodos

Compose(CompositionBatch) Compose(CompositionBatch) Compose(CompositionBatch) Compose(CompositionBatch)

Agrega o quita las partes del CompositionBatch especificado del contenedor y ejecuta la composición.Adds or removes the parts in the specified CompositionBatch from the container and executes composition.

Dispose() Dispose() Dispose() Dispose()

Libera todos los recursos usados por la instancia actual de la clase CompositionContainer.Releases all resources used by the current instance of the CompositionContainer class.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Libera los recursos no administrados que usa CompositionContainer y, de forma opcional, libera los recursos administrados.Releases the unmanaged resources used by the CompositionContainer and optionally releases the managed resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetExport<T,TMetadataView>() GetExport<T,TMetadataView>() GetExport<T,TMetadataView>() GetExport<T,TMetadataView>()

Devuelve la exportación con el nombre de contrato derivado del parámetro de tipo especificado.Returns the export with the contract name derived from the specified type parameter. Si no hay exactamente una exportación coincidente, se iniciará una excepción.If there is not exactly one matching export, an exception is thrown.

(Inherited from ExportProvider)
GetExport<T,TMetadataView>(String) GetExport<T,TMetadataView>(String) GetExport<T,TMetadataView>(String) GetExport<T,TMetadataView>(String)

Devuelve la exportación con el nombre de contrato especificado.Returns the export with the specified contract name. Si no hay exactamente una exportación coincidente, se iniciará una excepción.If there is not exactly one matching export, an exception is thrown.

(Inherited from ExportProvider)
GetExport<T>() GetExport<T>() GetExport<T>() GetExport<T>()

Devuelve la exportación con el nombre de contrato derivado del parámetro de tipo especificado.Returns the export with the contract name derived from the specified type parameter. Si no hay exactamente una exportación coincidente, se iniciará una excepción.If there is not exactly one matching export, an exception is thrown.

(Inherited from ExportProvider)
GetExport<T>(String) GetExport<T>(String) GetExport<T>(String) GetExport<T>(String)

Devuelve la exportación con el nombre de contrato especificado.Returns the export with the specified contract name. Si no hay exactamente una exportación coincidente, se iniciará una excepción.If there is not exactly one matching export, an exception is thrown.

(Inherited from ExportProvider)
GetExportedValue<T>() GetExportedValue<T>() GetExportedValue<T>() GetExportedValue<T>()

Devuelve el objeto exportado con el nombre de contrato derivado del parámetro de tipo especificado.Returns the exported object with the contract name derived from the specified type parameter. Si no hay exactamente un objeto exportado coincidente, se iniciará una excepción.If there is not exactly one matching exported object, an exception is thrown.

(Inherited from ExportProvider)
GetExportedValue<T>(String) GetExportedValue<T>(String) GetExportedValue<T>(String) GetExportedValue<T>(String)

Devuelve el objeto exportado con el nombre de contrato especificado.Returns the exported object with the specified contract name. Si no hay exactamente un objeto exportado coincidente, se iniciará una excepción.If there is not exactly one matching exported object, an exception is thrown.

(Inherited from ExportProvider)
GetExportedValueOrDefault<T>() GetExportedValueOrDefault<T>() GetExportedValueOrDefault<T>() 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.Gets the exported object with the contract name derived from the specified type parameter or the default value for the specified type, or throws an exception if there is more than one matching exported object.

(Inherited from ExportProvider)
GetExportedValueOrDefault<T>(String) GetExportedValueOrDefault<T>(String) GetExportedValueOrDefault<T>(String) 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.Gets the exported object with the specified contract name or the default value for the specified type, or throws an exception if there is more than one matching exported object.

(Inherited from ExportProvider)
GetExportedValues<T>() GetExportedValues<T>() GetExportedValues<T>() GetExportedValues<T>()

Obtiene todos los objetos exportados con el nombre de contrato derivado del parámetro de tipo especificado.Gets all the exported objects with the contract name derived from the specified type parameter.

(Inherited from ExportProvider)
GetExportedValues<T>(String) GetExportedValues<T>(String) GetExportedValues<T>(String) GetExportedValues<T>(String)

Obtiene todos los objetos exportados con el nombre de contrato especificado.Gets all the exported objects with the specified contract name.

(Inherited from ExportProvider)
GetExports(ImportDefinition) GetExports(ImportDefinition) GetExports(ImportDefinition) GetExports(ImportDefinition)

Obtiene todas las exportaciones que cumplen las condiciones de la definición de importación especificada.Gets all exports that match the conditions of the specified import definition.

(Inherited from ExportProvider)
GetExports(ImportDefinition, AtomicComposition) GetExports(ImportDefinition, AtomicComposition) GetExports(ImportDefinition, AtomicComposition) GetExports(ImportDefinition, AtomicComposition)

Obtiene todas las exportaciones que cumplen las condiciones de la definición de importación y la composición especificadas.Gets all exports that match the conditions of the specified import definition and composition.

(Inherited from ExportProvider)
GetExports(Type, Type, String) GetExports(Type, Type, String) GetExports(Type, Type, String) GetExports(Type, Type, String)

Obtiene todas las exportaciones con el nombre de contrato especificado.Gets all the exports with the specified contract name.

(Inherited from ExportProvider)
GetExports<T,TMetadataView>() GetExports<T,TMetadataView>() GetExports<T,TMetadataView>() GetExports<T,TMetadataView>()

Obtiene todas las exportaciones con el nombre de contrato derivado del parámetro de tipo especificado.Gets all the exports with the contract name derived from the specified type parameter.

(Inherited from ExportProvider)
GetExports<T,TMetadataView>(String) GetExports<T,TMetadataView>(String) GetExports<T,TMetadataView>(String) GetExports<T,TMetadataView>(String)

Obtiene todas las exportaciones con el nombre de contrato especificado.Gets all the exports with the specified contract name.

(Inherited from ExportProvider)
GetExports<T>() GetExports<T>() GetExports<T>() GetExports<T>()

Obtiene todas las exportaciones con el nombre de contrato derivado del parámetro de tipo especificado.Gets all the exports with the contract name derived from the specified type parameter.

(Inherited from ExportProvider)
GetExports<T>(String) GetExports<T>(String) GetExports<T>(String) GetExports<T>(String)

Obtiene todas las exportaciones con el nombre de contrato especificado.Gets all the exports with the specified contract name.

(Inherited from ExportProvider)
GetExportsCore(ImportDefinition, AtomicComposition) GetExportsCore(ImportDefinition, AtomicComposition) GetExportsCore(ImportDefinition, AtomicComposition) GetExportsCore(ImportDefinition, AtomicComposition)

Devuelve una colección de todas las exportaciones que cumplen las condiciones del objeto ImportDefinition especificado.Returns a collection of all exports that match the conditions in the specified ImportDefinition object.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
OnExportsChanged(ExportsChangeEventArgs) OnExportsChanged(ExportsChangeEventArgs) OnExportsChanged(ExportsChangeEventArgs) OnExportsChanged(ExportsChangeEventArgs)

Genera el evento ExportsChanged.Raises the ExportsChanged event.

(Inherited from ExportProvider)
OnExportsChanging(ExportsChangeEventArgs) OnExportsChanging(ExportsChangeEventArgs) OnExportsChanging(ExportsChangeEventArgs) OnExportsChanging(ExportsChangeEventArgs)

Genera el evento ExportsChanging.Raises the ExportsChanging event.

(Inherited from ExportProvider)
ReleaseExport(Export) ReleaseExport(Export) ReleaseExport(Export) ReleaseExport(Export)

Libera el objeto Export especificado de CompositionContainer.Releases the specified Export object from the CompositionContainer.

ReleaseExport<T>(Lazy<T>) ReleaseExport<T>(Lazy<T>) ReleaseExport<T>(Lazy<T>) ReleaseExport<T>(Lazy<T>)

Quita de la composición la exportación especificada y libera sus recursos si es posible.Removes the specified export from composition and releases its resources if possible.

ReleaseExports(IEnumerable<Export>) ReleaseExports(IEnumerable<Export>) ReleaseExports(IEnumerable<Export>) ReleaseExports(IEnumerable<Export>)

Libera un conjunto de objetos Export de CompositionContainer.Releases a set of Export objects from the CompositionContainer.

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

Quita de la composición una colección de exportaciones y libera sus recursos si es posible.Removes a collection of exports from composition and releases their resources if possible.

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

Quita de la composición una colección de exportaciones y libera sus recursos si es posible.Removes a collection of exports from composition and releases their resources if possible.

SatisfyImportsOnce(ComposablePart) SatisfyImportsOnce(ComposablePart) SatisfyImportsOnce(ComposablePart) SatisfyImportsOnce(ComposablePart)

Satisface las importaciones del objeto ComposablePart especificado sin registrarlo para la recomposición.Satisfies the imports of the specified ComposablePart object without registering it for recomposition.

ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>)

Obtiene todas las exportaciones que cumplen las condiciones de la importación especificada.Gets all the exports that match the conditions of the specified import.

(Inherited from ExportProvider)

Eventos

ExportsChanged ExportsChanged ExportsChanged ExportsChanged

Se produce cuando cambian las exportaciones en la clase ExportProvider.Occurs when the exports in the ExportProvider change.

(Inherited from ExportProvider)
ExportsChanging ExportsChanging ExportsChanging ExportsChanging

Se produce cuando cambian las exportaciones especificadas.Occurs when the provided exports are changing.

(Inherited from ExportProvider)

Métodos de extensión

ComposeExportedValue<T>(CompositionContainer, T) ComposeExportedValue<T>(CompositionContainer, T) ComposeExportedValue<T>(CompositionContainer, T) ComposeExportedValue<T>(CompositionContainer, T)

Crea un elemento a partir del valor especificado y lo compone en el contenedor de composición especificado.Creates a part from the specified value and composes it in the specified composition container.

ComposeExportedValue<T>(CompositionContainer, String, T) ComposeExportedValue<T>(CompositionContainer, String, T) ComposeExportedValue<T>(CompositionContainer, String, T) 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.Creates a part from the specified object under the specified contract name and composes it in the specified composition container.

ComposeParts(CompositionContainer, Object[]) ComposeParts(CompositionContainer, Object[]) ComposeParts(CompositionContainer, Object[]) ComposeParts(CompositionContainer, Object[])

Crea elementos a partir de una matriz de objetos con atributos y los compone en el contenedor de composición especificado.Creates composable parts from an array of attributed objects and composes them in the specified composition container.

SatisfyImportsOnce(ICompositionService, Object) SatisfyImportsOnce(ICompositionService, Object) SatisfyImportsOnce(ICompositionService, Object) SatisfyImportsOnce(ICompositionService, Object)

Crea el elemento especificado usando el servicio de composición indicado, con la recomposición deshabilitada.Composes the specified part by using the specified composition service, with recomposition disabled.

SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) 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.Composes the specified part by using the specified composition service, with recomposition disabled and using the specified reflection context.

Se aplica a

Consulte también: