CompositionContainer.Compose(CompositionBatch) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Lägger till eller tar bort delarna i den angivna CompositionBatch från containern och kör kompositionen.
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)
Parametrar
- batch
- CompositionBatch
Ändringar i som CompositionContainer ska inkluderas under kompositionen.
Exempel
I det här enkla exemplet skapas och läggs tre delar till i CompositionContainer, och en del hämtas för att visa att alla importer har fyllts i. I det här exemplet används den tillskrivna programmeringsmodellen.
[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
Kommentarer
Den här metoden är det primära sättet att lägga till eller ta bort delar direkt från containern. CompositionContainer Behåller alltid ett stabilt, sammansatt tillstånd. Därför är det aldrig nödvändigt att anropa Compose med en tom CompositionBatch för att starta kompositionen. Anropa Compose i stället metoden när du behöver göra ändringar i de delar som är tillgängliga för CompositionContainer.
CompositionBatch Kan innehålla båda delarna som ska läggas till och delar som ska tas bort. Rekomposition sker bara en gång för varje anrop till Compose.