CompositionContainer.Compose(CompositionBatch) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menambahkan atau menghapus bagian-bagian dalam yang ditentukan CompositionBatch dari kontainer dan menjalankan komposisi.
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
Perubahan pada untuk CompositionContainer disertakan selama komposisi.
Contoh
Dalam contoh sederhana ini, tiga bagian dibuat dan ditambahkan ke CompositionContainer, dan satu bagian diambil untuk menunjukkan bahwa semua impor telah diisi. Contoh ini menggunakan Model Pemrograman Atribut.
[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
Keterangan
Metode ini adalah cara utama untuk langsung menambahkan atau menghapus bagian dari kontainer. CompositionContainer akan selalu mempertahankan kondisi yang stabil dan tersusur. Oleh karena itu, memanggil Compose dengan kosong CompositionBatch tidak pernah diperlukan untuk memulai komposisi. Sebagai gantinya Compose , panggil metode setiap kali Anda perlu membuat perubahan pada bagian yang tersedia untuk CompositionContainer.
CompositionBatch dapat berisi kedua bagian yang akan ditambahkan dan bagian yang akan dihapus. Komposisi ulang hanya akan terjadi sekali untuk setiap panggilan ke Compose.