CompositionContainer.Compose(CompositionBatch) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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