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 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.