CompositionContainer.Compose(CompositionBatch) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Kapsayıcıda belirtilen CompositionBatch bölümleri ekler veya kaldırır ve oluşturma işlemini yürütür.
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)
Parametreler
- batch
- CompositionBatch
CompositionContainer oluşturma sırasında eklenecek şekilde değiştirilir.
Örnekler
Bu basit örnekte, üç bölüm oluşturulup öğesine eklenir CompositionContainerve tüm içeri aktarmaların doldurulduğunu göstermek için bir bölüm alınır. Bu örnekte Öznitelikli Programlama Modeli kullanılır.
[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
Açıklamalar
Bu yöntem, kapsayıcıdan doğrudan parça ekleme veya kaldırmanın birincil yoludur. CompositionContainer her zaman kararlı, birleştirilmiş bir durum korur. Bu nedenle, kompozisyonu başlatmak için boş CompositionBatch bir çağrı Compose yapmak asla gerekli değildir. Bunun yerine, için kullanılabilir parçalarda değişiklik yapmanız gerektiğinde yöntemini çağırın ComposeCompositionContainer.
CompositionBatch hem eklenecek parçaları hem de kaldırılacak bölümleri içerebilir. Yeniden konumlandırma her çağrısı Composeiçin yalnızca bir kez gerçekleşir.