CompositionContainer.Compose(CompositionBatch) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Aggiunge o rimuove le parti nell'oggetto CompositionBatch specificato dal contenitore ed esegue la composizione.
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)
Parametri
- batch
- CompositionBatch
Modifiche a CompositionContainer da includere durante la composizione.
Esempio
In questo semplice esempio vengono create tre parti e aggiunte a CompositionContainere viene recuperata una parte per indicare che tutte le importazioni sono state riempite. In questo esempio viene usato il modello di programmazione con attributi.
[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
Commenti
Questo metodo è il modo principale per aggiungere o rimuovere direttamente parti dal contenitore. L'oggetto CompositionContainer manterrà sempre uno stato stabile e composto. Pertanto, la chiamata Compose con un vuoto CompositionBatch non è mai necessaria per iniziare la composizione. Chiamare invece il Compose metodo ogni volta che è necessario apportare modifiche alle parti disponibili per .CompositionContainer
CompositionBatch Può contenere entrambe le parti da aggiungere e le parti da rimuovere. La ricomposizione verrà eseguita una sola volta per ogni chiamata a Compose.