CompositionContainer.Compose(CompositionBatch) Methode

Definition

Fügt die Teile im angegebenen CompositionBatch Container hinzu oder entfernt sie und führt 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 der CompositionContainer Einschließung während der Komposition.

Beispiele

In diesem einfachen Beispiel werden drei Teile erstellt und hinzugefügt CompositionContainer, und ein Teil wird abgerufen, um anzuzeigen, dass alle Importe ausgefüllt wurden. In diesem Beispiel wird das Attributprogrammierungsmodell 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 Wird immer einen stabilen, zusammengesetzten Zustand beibehalten. Daher ist es nie notwendig, Compose die Komposition mit einem leeren CompositionBatch Aufruf zu beginnen. Rufen Sie stattdessen die Compose Methode auf, wenn Sie Änderungen an den für die CompositionContainerKomponenten verfügbaren Komponenten vornehmen müssen.

Dies CompositionBatch kann beide Teile enthalten, die hinzugefügt werden sollen, und Teile, die entfernt werden sollen. Die Neuanalyse erfolgt nur einmal für jeden Anruf.Compose

Gilt für:

Weitere Informationen