CompositionContainer.Compose(CompositionBatch) Methode

Definitie

Voegt de onderdelen in de opgegeven CompositionBatch container toe of verwijdert deze en voert samenstelling uit.

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)

Parameters

batch
CompositionBatch

Wijzigingen in de CompositionContainer op te nemen tijdens de samenstelling.

Voorbeelden

In dit eenvoudige voorbeeld worden drie delen gemaakt en toegevoegd aan het CompositionContaineren één deel wordt opgehaald om aan te geven dat alle importbewerkingen zijn ingevuld. In dit voorbeeld wordt het toegeschreven programmeermodel gebruikt.

[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

Opmerkingen

Deze methode is de primaire manier om onderdelen rechtstreeks toe te voegen aan of te verwijderen uit de container. De CompositionContainer zal altijd een stabiele, samengestelde status behouden. Daarom is bellen Compose met een lege CompositionBatch nooit nodig om de samenstelling te starten. Roep in plaats daarvan de Compose methode aan wanneer u wijzigingen moet aanbrengen in de onderdelen die beschikbaar zijn voor de CompositionContainer.

De CompositionBatch kan beide onderdelen bevatten die moeten worden toegevoegd en onderdelen die moeten worden verwijderd. Hercompositie vindt slechts één keer plaats voor elke aanroep naar Compose.

Van toepassing op

Zie ook