CompositionContainer.Compose(CompositionBatch) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.