CompositionContainer CompositionContainer CompositionContainer CompositionContainer Class

Définition

Gère la composition des composants.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
Héritage
CompositionContainerCompositionContainerCompositionContainerCompositionContainer
Implémente

Exemples

Dans l’exemple suivant, un CompositionContainer objet est initialisé avec un catalogue et est utilisé pour remplir les importations d’un composant.In the following example, a CompositionContainer object is initialized with a catalog and is used to fill the imports of a part. Cet exemple utilise le modèle de programmation avec attributs.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

Remarques

Un CompositionContainer objet remplit deux fonctions principales dans une application.A CompositionContainer object serves two major purposes in an application. Tout d’abord, il assure le suivi des parties disponibles pour la composition et de leurs dépendances, et effectue la composition chaque fois que l’ensemble des parties disponibles change.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. Deuxièmement, il fournit les méthodes par lesquelles l’application obtient des instances de parties composées ou remplit les dépendances d’une partie composable.Second, it provides the methods by which the application gets instances of composed parts or fills the dependencies of a composable part.

Important

Ce type implémente l'interface IDisposable.This type implements the IDisposable interface. Une fois que vous avez fini d’utiliser le type, vous devez le supprimer directement ou indirectement.When you have finished using the type, you should dispose of it either directly or indirectly. Pour supprimer directement le type Dispose, appelez sa méthode dans un bloc try/catch.To dispose of the type directly, call its Dispose method in a try/catch block. Pour la supprimer indirectement, utilisez une construction de langage telle que using (dans C#) ou Using (dans Visual Basic).To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). Pour plus d’informations, consultez la section « Utilisation d’un objet qui implémente IDisposable » dans la rubrique de l’interface IDisposable.For more information, see the "Using an Object that Implements IDisposable" section in the IDisposable interface topic.

Les parties peuvent être mises à la disposition du conteneur soit directement, Catalog soit par le biais de la propriété.Parts can be made available to the container either directly or through the Catalog property. Toutes les parties détectables dans ce ComposablePartCatalog conteneur sont accessibles au conteneur pour répondre aux importations, ainsi que toutes les parties ajoutées directement.All the parts discoverable in this ComposablePartCatalog are available to the container to fulfill imports, along with any parts added directly.

La Compose méthode permet d’ajouter des parties instanciées à un conteneur existant.The Compose method allows instantiated parts to be added to an existing container. En supposant que la composition est réussie, les importations de ces parties sont complétées par des parties récupérées du conteneur, et leurs exportations sont disponibles pour d’autres parties.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. Les importations marquées comme étant recomposables seront inscrites pour la recomposition.Imports marked as recomposable will be registered for recomposition.

La SatisfyImportsOnce méthode permet à un composant de remplir ses importations sans être ajoutés au conteneur.The SatisfyImportsOnce method allows a part to have its imports filled without being added to the container. Si la composition est réussie, les importations du composant sont comblées, mais les exportations du composant ne sont pas disponibles pour d’autres parties et aucune importation n’est inscrite pour la recomposition.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.

CompositionContainerles objets doivent toujours être supprimés.CompositionContainer objects should always be disposed. Lorsque la Dispose méthode est appelée, l' CompositionContainer objet supprime également toutes les parties qu’il a créées.When the Dispose method is called, the CompositionContainer object also disposes all the parts that it has created.

Un CompositionContainer objet qui est accessible à partir de plusieurs threads doit être construit isThreadSafe avec le paramètre truedéfini sur, CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) à l’aide du constructeur.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. Les performances seront légèrement plus lentes truequand isThreadSafe est, donc nous vous recommandons de définir ce false paramètre sur dans des scénarios monothread.Performance will be slightly slower when isThreadSafe is true, so we recommend that you set this parameter to false in single-threaded scenarios. La valeur par défaut est false.The default is false.

Avertissement

Un CompositionContainer ne doit jamais s’importer lui-même ou un composant qui y fait référence.A CompositionContainer should never import itself, or a part that has a reference to it. Une telle référence pourrait permettre à une partie non approuvée d’accéder à toutes les parties dans le conteneur.Such a reference could allow an untrusted part to gain access all the parts in the container.

Constructeurs

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

Initialise une nouvelle instance de la classe 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[])

Initialise une nouvelle instance de la classe CompositionContainer avec le catalogue spécifié, le mode thread-safe et les fournisseurs d'exportations.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[])

Initialise une nouvelle instance de la classe CompositionContainer avec les catalogues, les options et les fournisseurs d'exportations spécifiés.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[])

Initialise une nouvelle instance de la classe CompositionContainer avec les catalogues spécifiés et les fournisseurs d'exportations.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[])

Initialise une nouvelle instance de la classe CompositionContainer avec les fournisseurs d'exportations et les options spécifiés.Initializes a new instance of the CompositionContainer class with the specified export providers and options.

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

Initialise une nouvelle instance de la classe CompositionContainer avec les fournisseurs d'exportations spécifiés.Initializes a new instance of the CompositionContainer class with the specified export providers.

Propriétés

Catalog Catalog Catalog Catalog

Obtient le ComposablePartCatalog qui fournit au conteneur l'accès aux objets Export.Gets the ComposablePartCatalog that provides the container access to Export objects.

Providers Providers Providers Providers

Obtient les fournisseurs d'exportations qui fournissent au conteneur l'accès aux objets ComposablePartCatalog supplémentaires.Gets the export providers that provide the container access to additional ComposablePartCatalog objects.

Méthodes

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

Ajoute ou supprime les parties dans le CompositionBatch spécifié du conteneur et exécute la composition.Adds or removes the parts in the specified CompositionBatch from the container and executes composition.

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

Libère toutes les ressources utilisées par l'instance actuelle de la classe CompositionContainer.Releases all resources used by the current instance of the CompositionContainer class.

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

Libère les ressources non managées utilisées par CompositionContainer et libère éventuellement les ressources managées.Releases the unmanaged resources used by the CompositionContainer and optionally releases the managed resources.

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

Détermine si l'objet spécifié est identique à l'objet actuel.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>()

Retourne l'exportation avec le nom de contrat dérivé du paramètre de type spécifié.Returns the export with the contract name derived from the specified type parameter. Si la mise en correspondance ne donne pas une et une seule exportation, une exception est levée.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)

Retourne l'exportation avec le nom de contrat spécifié.Returns the export with the specified contract name. Si la mise en correspondance ne donne pas une et une seule exportation, une exception est levée.If there is not exactly one matching export, an exception is thrown.

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

Retourne l'exportation avec le nom de contrat dérivé du paramètre de type spécifié.Returns the export with the contract name derived from the specified type parameter. Si la mise en correspondance ne donne pas une et une seule exportation, une exception est levée.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)

Retourne l'exportation avec le nom de contrat spécifié.Returns the export with the specified contract name. Si la mise en correspondance ne donne pas une et une seule exportation, une exception est levée.If there is not exactly one matching export, an exception is thrown.

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

Retourne l'objet exporté avec le nom de contrat dérivé du paramètre de type spécifié.Returns the exported object with the contract name derived from the specified type parameter. Si la mise en correspondance ne donne pas uniquement un seul objet exporté, une exception est levée.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)

Retourne l'objet exporté avec le nom de contrat spécifié.Returns the exported object with the specified contract name. Si la mise en correspondance ne donne pas uniquement un seul objet exporté, une exception est levée.If there is not exactly one matching exported object, an exception is thrown.

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

Obtient l'objet exporté avec le nom de contrat dérivé du paramètre de type spécifié ou la valeur par défaut du type spécifié, ou encore lève une exception s'il existe plusieurs correspondances d'objets exportés.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)

Obtient l'objet exporté avec le nom de contrat spécifié ou la valeur par défaut du type spécifié, ou encore lève une exception s'il existe plusieurs correspondances d'objets exportés.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>()

Obtient tous les objets exportés avec le nom de contrat dérivé du paramètre de type spécifié.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)

Obtient tous les objets exportés avec le nom de contrat spécifié.Gets all the exported objects with the specified contract name.

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

Obtient toutes les exportations qui correspondent aux conditions de la définition de l'importation spécifiée.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)

Obtient toutes les exportations qui correspondent aux conditions de la définition et de la composition de l'importation spécifiée.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)

Obtient toutes les exportations avec le nom de contrat spécifié.Gets all the exports with the specified contract name.

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

Obtient toutes les exportations avec le nom de contrat dérivé du paramètre de type spécifié.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)

Obtient toutes les exportations avec le nom de contrat spécifié.Gets all the exports with the specified contract name.

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

Obtient toutes les exportations avec le nom de contrat dérivé du paramètre de type spécifié.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)

Obtient toutes les exportations avec le nom de contrat spécifié.Gets all the exports with the specified contract name.

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

Retourne une collection de toutes les exportations qui correspondent aux conditions dans l'objet ImportDefinition spécifié.Returns a collection of all exports that match the conditions in the specified ImportDefinition object.

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

Fait office de fonction de hachage par défaut.Serves as the default hash function.

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

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

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

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

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

Déclenche l'événement ExportsChanged.Raises the ExportsChanged event.

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

Déclenche l'événement ExportsChanging.Raises the ExportsChanging event.

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

Libère l'objet Export spécifié du 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>)

Supprime l'exportation spécifiée de la composition et libère ses ressources, si possible.Removes the specified export from composition and releases its resources if possible.

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

Libère un jeu d'objets Export du 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>>)

Supprime une collection d'exportations de la composition et libère leurs ressources, si possible.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>>)

Supprime une collection d'exportations de la composition et libère leurs ressources, si possible.Removes a collection of exports from composition and releases their resources if possible.

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

Satisfait les importations de l'objet ComposablePart spécifié sans l'enregistrer en vue de la recomposition.Satisfies the imports of the specified ComposablePart object without registering it for recomposition.

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

Retourne une chaîne qui représente l'objet actuel.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>)

Obtient toutes les exportations qui correspondent aux conditions de l'importation spécifiée.Gets all the exports that match the conditions of the specified import.

(Inherited from ExportProvider)

Événements

ExportsChanged ExportsChanged ExportsChanged ExportsChanged

Se produit lors de la modification des exportations de ExportProvider.Occurs when the exports in the ExportProvider change.

(Inherited from ExportProvider)
ExportsChanging ExportsChanging ExportsChanging ExportsChanging

Se produit lorsque les exportations fournies sont modifiées.Occurs when the provided exports are changing.

(Inherited from ExportProvider)

Méthodes d’extension

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

Crée un composant à partir de la valeur spécifiée et le compose dans le conteneur de composition spécifié.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)

Crée un composant à partir de l'objet spécifié sous le nom de contrat spécifié et le compose dans le conteneur de composition spécifié.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[])

Crée des composants composables à partir d'un tableau d'objets avec attributs et les compose dans le conteneur de composition spécifié.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)

Compose le composant spécifié à l'aide du service de composition spécifié, avec la recomposition désactivée.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)

Constitue la partie spécifiée à l'aide du service spécifié de composition, avec la recomposition désactivée et à l'aide du contexte de réflexion spécifié.Composes the specified part by using the specified composition service, with recomposition disabled and using the specified reflection context.

S’applique à

Voir aussi