Partage via


CompositionContainer.Compose(CompositionBatch) Méthode

Définition

Ajoute ou supprime les parties dans le CompositionBatch spécifié du conteneur et exécute la composition.

public:
 void Compose(System::ComponentModel::Composition::Hosting::CompositionBatch ^ batch);
public void Compose (System.ComponentModel.Composition.Hosting.CompositionBatch batch);
member this.Compose : System.ComponentModel.Composition.Hosting.CompositionBatch -> unit
Public Sub Compose (batch As CompositionBatch)

Paramètres

batch
CompositionBatch

Modifications apportées au CompositionContainer à inclure pendant la composition.

Exemples

Dans cet exemple simple, trois parties sont créées et ajoutées à , CompositionContaineret une partie est récupérée pour montrer que toutes les importations ont été remplies. Cet exemple utilise le modèle de programmation par attributs.

[Export]
class Part1
{
    public String data = "This is the example data!";
}

[Export]
class Part2
{
    [Import]
    public Part1 data { get; set; }
}

[Export]
class Part3
{
    [Import]
    public Part2 data { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        CompositionContainer container = new CompositionContainer();
        CompositionBatch batch = new CompositionBatch();
        batch.AddPart(AttributedModelServices.CreatePart(new Part1()));
        batch.AddPart(AttributedModelServices.CreatePart(new Part2()));
        batch.AddPart(AttributedModelServices.CreatePart(new Part3()));
        container.Compose(batch);
        Part3 _part = container.GetExportedValue<Part3>();
        Console.WriteLine(_part.data.data.data);
        Console.ReadLine();
    }
}
<Export()>
Public Class Part1
    Public ReadOnly Property data As String
        Get
            Return "This is the example data!"
        End Get
    End Property
End Class
<Export()>
Public Class Part2
    <Import()>
    Public Property data As Part1
End Class

<Export()>
Public Class Part3
    <Import()>
    Public Property data As Part2
End Class


Sub Main()
    Dim container As New CompositionContainer()
    Dim batch As New CompositionBatch()
    batch.AddPart(AttributedModelServices.CreatePart(New Part1()))
    batch.AddPart(AttributedModelServices.CreatePart(New Part2()))
    batch.AddPart(AttributedModelServices.CreatePart(New Part3()))
    container.Compose(batch)
    Dim _part As Part3
    _part = container.GetExportedValue(Of Part3)()
    Console.WriteLine(_part.data.data.data)
    Console.ReadLine()

End Sub

Remarques

Cette méthode est le principal moyen d’ajouter ou de supprimer directement des parties du conteneur. Le CompositionContainer maintient toujours un état stable et composé. Par conséquent, l’appel Compose avec un vide CompositionBatch n’est jamais nécessaire pour commencer la composition. Au lieu de cela, appelez la Compose méthode chaque fois que vous devez apporter des modifications aux composants disponibles pour .CompositionContainer

Peut CompositionBatch contenir à la fois les parties à ajouter et les parties à supprimer. La recomposition n’aura lieu qu’une seule fois pour chaque appel à Compose.

S’applique à

Voir aussi