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. Este ejemplo 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 el 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 los cambios de elementos del conjunto de disponibilidad.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 que la aplicación obtiene las instancias de partes compuestas o rellena las dependencias de una parte del componente.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 IDisposable interfaz.This type implements the IDisposable interface. Cuando haya terminado de utilizar el tipo, debe deshacerse de él directa o indirectamente.When you have finished using the type, you should dispose of it either directly or indirectly. Para deshacerse del tipo directamente, llame a su Dispose método en un try / catch bloque.To dispose of the type directly, call its Dispose method in a try/catch block. Para deshacerse de él, indirectamente, usar 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 obtener más información, vea la sección "Uso de un objeto que implementa IDisposable" en el IDisposable tema de la interfaz.For more information, see the "Using an Object that Implements IDisposable" section in the IDisposable interface topic.

Las partes pueden estar disponibles en el contenedor ya sea directamente o a través del Catalog propiedad.Parts can be made available to the container either directly or through the Catalog property. Todas las partes sea detectables en esto ComposablePartCatalog están disponibles en el contenedor para realizar 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 que las partes con instancias que se agregarán a un contenedor existente.The Compose method allows instantiated parts to be added to an existing container. Suponiendo que la composición es correcta, estos elementos tendrán sus importaciones llenadas con 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 redactar de nuevo se registrará para la recomposición.Imports marked as recomposable will be registered for recomposition.

El SatisfyImportsOnce método permite que un elemento a tener sus importaciones rellena sin que se va a agregar al contenedor.The SatisfyImportsOnce method allows a part to have its imports filled without being added to the container. Si la composición es correcta, se rellenará las importaciones del elemento, pero las exportaciones del elemento no estará disponibles para otras partes y ninguna importación se registrará 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.

CompositionContainer siempre se deben desechar objetos.CompositionContainer objects should always be disposed. Cuando el Dispose se invoca el CompositionContainer objeto también elimina todas las partes que ha creado.When the Dispose method is called, the CompositionContainer object also disposes all the parts that it has created.

Un CompositionContainer se debe construir el objeto que se puede acceder desde varios subprocesos con el isThreadSafe parámetro establecido en true, usando la CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) 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á un poco más lento cuando isThreadSafe es true, por lo que recomendamos que establezca este parámetro en false en escenarios de un único 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

Un CompositionContainer nunca debería importar propio o un elemento que tiene 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 una parte que no se confía obtener acceso a todas las partes en el 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)

Extension Methods

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 especificado 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 utilizando 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)

Crea el elemento especificado utilizando el servicio de composición indicado, con la recomposición deshabilitada y utilizando el contexto de reflexión especificado.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: