CompositionContainer.Compose(CompositionBatch) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přidá nebo odebere části v zadaném CompositionBatch kontejneru a spustí složení.
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)
Parametry
- batch
- CompositionBatch
Změny v souboru, který CompositionContainer se má zahrnout během složení.
Příklady
V tomto jednoduchém příkladu jsou vytvořeny tři části a přidány do objektu CompositionContainera jedna část se načte, aby se zobrazilo, že byly vyplněny všechny importy. V tomto příkladu se používá atributový programovací model.
[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
Poznámky
Tato metoda je primárním způsobem, jak přímo přidat nebo odebrat části z kontejneru. Bude CompositionContainer vždy udržovat stabilní, složený stav. Proto volání Compose s prázdnou CompositionBatch není nikdy nutné k zahájení složení. Místo toho volejte metodu Compose vždy, když potřebujete provést změny částí dostupných pro CompositionContainer.
Může CompositionBatch obsahovat obě části, které se mají přidat, a části, které se mají odebrat. Pro každé volání proběhne překompilování Composepouze jednou.