CompositionContainer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Gerencia a composição de partes.
public ref class CompositionContainer : System::ComponentModel::Composition::Hosting::ExportProvider, IDisposable, System::ComponentModel::Composition::ICompositionService
public class CompositionContainer : System.ComponentModel.Composition.Hosting.ExportProvider, IDisposable, System.ComponentModel.Composition.ICompositionService
type CompositionContainer = class
inherit ExportProvider
interface ICompositionService
interface IDisposable
Public Class CompositionContainer
Inherits ExportProvider
Implements ICompositionService, IDisposable
- Herança
- Implementações
Exemplos
No exemplo a seguir, um CompositionContainer objeto é inicializado com um catálogo e é usado para preencher as importações de uma parte. Este exemplo usa o modelo de programação atribuída.
[Export]
class MyAddin
{
public String myData { get { return "The data!"; } }
}
class MyProgram
{
[Import]
public MyAddin myAddin { get; set; }
}
class Program
{
static void Main(string[] args)
{
AggregateCatalog catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyAddin).Assembly));
CompositionContainer _container = new CompositionContainer(catalog);
MyProgram myProgram = new MyProgram();
_container.SatisfyImportsOnce(myProgram);
Console.WriteLine(myProgram.myAddin.myData);
Console.ReadLine();
_container.Dispose();
}
}
<Export()>
Public Class MyAddin
Public ReadOnly Property theData As String
Get
Return "The Data!"
End Get
End Property
End Class
Public Class MyProgam
Private _MyAddin As MyAddin
<Import()>
Public Property MyAddinProperty As MyAddin
Get
Return _MyAddin
End Get
Set(ByVal value As MyAddin)
_MyAddin = value
End Set
End Property
End Class
Sub Main()
Dim catalog As AggregateCatalog = New AggregateCatalog()
catalog.Catalogs.Add(New AssemblyCatalog(GetType(MyAddin).Assembly))
Dim container As CompositionContainer = New CompositionContainer(catalog)
Dim theProgam As MyProgam = New MyProgam()
container.SatisfyImportsOnce(theProgam)
Console.WriteLine(theProgam.MyAddinProperty.theData)
Console.ReadLine()
container.Dispose()
End Sub
Comentários
Um CompositionContainer objeto serve a duas finalidades principais em um aplicativo. Primeiro, ele controla quais partes estão disponíveis para composição e quais são suas dependências e executa a composição sempre que o conjunto de partes disponíveis é alterado. Em segundo lugar, ele fornece os métodos pelos quais o aplicativo obtém instâncias de partes compostas ou preenche as dependências de uma parte composável.
Importante
Esse tipo implementa a interface IDisposable. Quando você terminar de usar o tipo, deverá descartá-lo direta ou indiretamente. Para descartar o tipo diretamente, chame o método Dispose dele em um bloco try
/catch
. Para descartá-lo indiretamente, use um constructo de linguagem como using
( em C#) ou Using
(em Visual Basic). Saiba mais na seção "Como usar um objeto que implementa IDisposable" no tópico da interface IDisposable.
As partes podem ser disponibilizadas para o contêiner diretamente ou por meio da Catalog propriedade . Todas as partes detectáveis nesse ComposablePartCatalog contêiner estão disponíveis para atender às importações, juntamente com todas as partes adicionadas diretamente.
O Compose método permite que partes instanciadas sejam adicionadas a um contêiner existente. Supondo que a composição seja bem-sucedida, essas partes terão suas importações preenchidas com partes recuperadas do contêiner e suas exportações estarão disponíveis para outras partes. As importações marcadas como recomposíveis serão registradas para recomposição.
O SatisfyImportsOnce método permite que uma parte tenha suas importações preenchidas sem ser adicionada ao contêiner. Se a composição for bem-sucedida, as importações da parte serão preenchidas, mas as exportações da parte não estarão disponíveis para outras partes e nenhuma importação será registrada para recomposição.
CompositionContainer os objetos sempre devem ser descartados. Quando o Dispose método é chamado, o CompositionContainer objeto também descarta todas as partes que ele criou.
Um CompositionContainer objeto que pode ser acessado de vários threads deve ser construído com o isThreadSafe
parâmetro definido como true
, usando o CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) construtor . O desempenho será um pouco mais lento quando isThreadSafe
for true
, portanto, recomendamos que você defina esse parâmetro como false
em cenários de thread único. O padrão é false
.
Aviso
Um CompositionContainer nunca deve importar a si mesmo ou uma parte que tenha uma referência a ela. Essa referência pode permitir que uma parte não confiável obtenha acesso a todas as partes no contêiner.
Construtores
CompositionContainer() |
Inicializa uma nova instância da classe CompositionContainer. |
CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) |
Inicializa uma nova instância da classe CompositionContainer com o catálogo, modo thread-safe e provedores de exportação especificados. |
CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) |
Inicializa uma nova instância da classe CompositionContainer com os provedores de exportação, de opções e de catálogo especificados. |
CompositionContainer(ComposablePartCatalog, ExportProvider[]) |
Inicializa uma nova instância da classe CompositionContainer com os provedores de exportação e de catálogo especificados. |
CompositionContainer(CompositionOptions, ExportProvider[]) |
Inicializa uma nova instância da classe CompositionContainer com as opções e os provedores de exportação especificados. |
CompositionContainer(ExportProvider[]) |
Inicializa uma nova instância da classe CompositionContainer com os provedores de exportação especificados. |
Propriedades
Catalog |
Obtém o ComposablePartCatalog que fornece ao contêiner acesso a objetos Export. |
Providers |
Obtém os provedores de exportação que fornecem ao contêiner acesso a objetos ComposablePartCatalog adicionais. |
Métodos
Compose(CompositionBatch) |
Adiciona ou remove as partes no CompositionBatch especificado do contêiner e executa a composição. |
Dispose() |
Libera todos os recursos usados pela instância atual da classe CompositionContainer. |
Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo CompositionContainer e opcionalmente libera os recursos gerenciados. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetExport<T,TMetadataView>() |
Retorna a exportação com o nome do contrato derivado do parâmetro de tipo especificado. Caso não haja exatamente uma exportação correspondente, uma exceção é lançada. (Herdado de ExportProvider) |
GetExport<T,TMetadataView>(String) |
Retorna a exportação com o nome do contrato especificado. Caso não haja exatamente uma exportação correspondente, uma exceção é lançada. (Herdado de ExportProvider) |
GetExport<T>() |
Retorna a exportação com o nome do contrato derivado do parâmetro de tipo especificado. Caso não haja exatamente uma exportação correspondente, uma exceção é lançada. (Herdado de ExportProvider) |
GetExport<T>(String) |
Retorna a exportação com o nome do contrato especificado. Caso não haja exatamente uma exportação correspondente, uma exceção é lançada. (Herdado de ExportProvider) |
GetExportedValue<T>() |
Retorna o objeto exportado com o nome do contrato derivado do parâmetro de tipo especificado. Se não houver exatamente um objeto exportado correspondente, uma exceção será gerada. (Herdado de ExportProvider) |
GetExportedValue<T>(String) |
Retorna o objeto exportado com o nome do contrato especificado. Se não houver exatamente um objeto exportado correspondente, uma exceção será gerada. (Herdado de ExportProvider) |
GetExportedValueOrDefault<T>() |
Obtém o objeto exportado com o nome do contrato derivado do parâmetro de tipo especificado ou o valor padrão para o tipo especificado ou gera uma exceção, se houver mais de um objeto exportado correspondente. (Herdado de ExportProvider) |
GetExportedValueOrDefault<T>(String) |
Obtém o objeto exportado com o nome do contrato especificado ou o valor padrão para o tipo especificado ou gera uma exceção, se houver mais de um objeto exportado correspondente. (Herdado de ExportProvider) |
GetExportedValues<T>() |
Obtém todos os objetos exportados com o nome do contrato derivado do parâmetro de tipo especificado. (Herdado de ExportProvider) |
GetExportedValues<T>(String) |
Obtém os objetos exportados com o nome do contrato especificado. (Herdado de ExportProvider) |
GetExports(ImportDefinition) |
Obtém todas as exportações que correspondem às condições da definição de importação especificada. (Herdado de ExportProvider) |
GetExports(ImportDefinition, AtomicComposition) |
Obtém todas as exportações que correspondem às condições da definição e composição de importação especificadas. (Herdado de ExportProvider) |
GetExports(Type, Type, String) |
Obtém todas as exportações com o nome do contrato especificado. (Herdado de ExportProvider) |
GetExports<T,TMetadataView>() |
Obtém todas as exportações com o nome do contrato derivado do parâmetro de tipo especificado. (Herdado de ExportProvider) |
GetExports<T,TMetadataView>(String) |
Obtém todas as exportações com o nome do contrato especificado. (Herdado de ExportProvider) |
GetExports<T>() |
Obtém todas as exportações com o nome do contrato derivado do parâmetro de tipo especificado. (Herdado de ExportProvider) |
GetExports<T>(String) |
Obtém todas as exportações com o nome do contrato especificado. (Herdado de ExportProvider) |
GetExportsCore(ImportDefinition, AtomicComposition) |
Retorna uma coleção de todas as exportações que correspondem às condições no objeto ImportDefinition especificado. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnExportsChanged(ExportsChangeEventArgs) |
Aciona o evento ExportsChanged. (Herdado de ExportProvider) |
OnExportsChanging(ExportsChangeEventArgs) |
Aciona o evento ExportsChanging. (Herdado de ExportProvider) |
ReleaseExport(Export) |
Libera o objeto Export especificado do CompositionContainer. |
ReleaseExport<T>(Lazy<T>) |
Remove a exportação especificada de composição e libera seus recursos, se possível. |
ReleaseExports(IEnumerable<Export>) |
Libera um conjunto de objetos Export do CompositionContainer. |
ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>) |
Remove uma coleção de exportações da composição e libera seus recursos, se possível. |
ReleaseExports<T>(IEnumerable<Lazy<T>>) |
Remove uma coleção de exportações da composição e libera seus recursos, se possível. |
SatisfyImportsOnce(ComposablePart) |
Satisfaz as importações do objeto ComposablePart especificado sem registrá-lo para recomposição. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) |
Obtém todas as exportações que correspondem às condições da importação especificada. (Herdado de ExportProvider) |
Eventos
ExportsChanged |
Ocorre quando as exportações no ExportProvider são alteradas. (Herdado de ExportProvider) |
ExportsChanging |
Ocorre quando as exportações fornecidas são alteradas. (Herdado de ExportProvider) |
Métodos de Extensão
ComposeExportedValue<T>(CompositionContainer, T) |
Cria uma parte do valor especificado e a combina no contêiner de combinação especificado. |
ComposeExportedValue<T>(CompositionContainer, String, T) |
Cria uma parte do objeto especificado sob o nome de contrato especificado e a compõe no contêiner de composição especificado. |
ComposeParts(CompositionContainer, Object[]) |
Cria partes combináveis de uma matriz de objetos atribuídos e as combina no contêiner de combinação especificado. |
SatisfyImportsOnce(ICompositionService, Object) |
Compõe a parte especificada usando o serviço de composição especificado, com recomposição desabilitada. |
SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) |
Compõe a parte especificada usando o serviço de composição especificado, com recomposição desabilitada e usando o contexto de reflexão especificado. |