Freigeben über


CompositionContainer.Compose(CompositionBatch) Methode

Definition

Fügt die Teile im angegebenen CompositionBatch dem Container hinzu bzw. entfernt sie aus dem Container und führt die Komposition aus.

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)

Parameter

batch
CompositionBatch

Änderungen an CompositionContainer, die während der Komposition berücksichtigt werden sollen.

Beispiele

In diesem einfachen Beispiel werden drei Teile erstellt und dem CompositionContainerhinzugefügt, und ein Teil wird abgerufen, um zu zeigen, dass alle Importe ausgefüllt wurden. In diesem Beispiel wird das Attributierte Programmiermodell verwendet.

[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

Hinweise

Diese Methode ist die primäre Methode zum direkten Hinzufügen oder Entfernen von Teilen aus dem Container. Der CompositionContainer behält immer einen stabilen, zusammengesetzten Zustand bei. Daher ist das Aufrufen Compose mit einer leeren CompositionBatch nie erforderlich, um mit der Komposition zu beginnen. Rufen Sie stattdessen die Compose -Methode auf, wenn Sie Änderungen an den für verfügbaren CompositionContainerTeilen vornehmen müssen.

Die CompositionBatch kann sowohl zu hinzufügende als auch zu entfernende Teile enthalten. Die Neukomposition wird nur einmal für jeden Aufruf von Composedurchgeführt.

Gilt für:

Weitere Informationen