CompositionContainer.Compose(CompositionBatch) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Agrega o quita las partes del CompositionBatch especificado del contenedor y ejecuta la composición.
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)
Parámetros
- batch
- CompositionBatch
Cambios en el objeto CompositionContainer que se van a incluir durante la composición.
Ejemplos
En este ejemplo sencillo, se crean tres partes y se agregan a CompositionContainer, y se recupera una parte para mostrar que todas las importaciones se han rellenado. En este ejemplo se usa el modelo de programación con atributos.
[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
Comentarios
Este método es la forma principal de agregar o quitar elementos directamente del contenedor. siempre CompositionContainer mantendrá un estado estable y compuesto. Por lo tanto, nunca es necesario llamar a Compose con un vacío CompositionBatch para iniciar la composición. En su lugar, llame al Compose método siempre que necesite realizar cambios en los elementos disponibles para .CompositionContainer
CompositionBatch puede contener ambas partes que se van a agregar y partes que se van a quitar. La recomposición solo tendrá lugar una vez para cada llamada a Compose.