CompositionContainer Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Gerir a composição das 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 seguinte, um CompositionContainer objeto é inicializado com um catálogo e usado para preencher as importações de uma peça. Este exemplo utiliza 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
Observações
Um CompositionContainer objeto serve dois propósitos principais numa aplicação. Primeiro, regista quais as partes disponíveis para composição e quais são as suas dependências, e realiza a composição sempre que o conjunto de peças disponíveis muda. Em segundo lugar, fornece os métodos pelos quais a aplicação obtém instâncias de partes compostas ou preenche as dependências de uma peça componível.
Importante
Este tipo implementa a interface IDisposable. Quando terminar de usar o tipo, você deve eliminá-lo direta ou indiretamente. Para descartar o tipo diretamente, chame seu método Dispose em um bloco try/catch. Para descartá-lo indiretamente, use uma construção de linguagem como using (em C#) ou Using (em Visual Basic). Para obter mais informações, consulte a seção "Usando um objeto que implementa IDisposable" no tópico da IDisposable interface.
As peças podem ser disponibilizadas ao contentor diretamente ou através da Catalog propriedade. Todas as peças descobertas aqui ComposablePartCatalog estão disponíveis no contentor para cumprir importações, juntamente com quaisquer peças adicionadas diretamente.
O Compose método permite adicionar peças instanciadas a um contentor existente. Assumindo que a composição é bem-sucedida, estas peças terão as suas importações preenchidas com peças recolhidas do contentor, e as suas exportações estarão disponíveis para outras peças. As importações marcadas como recomponíveis serão registadas para recomposição.
O SatisfyImportsOnce método permite que uma peça tenha as suas importações preenchidas sem ser adicionada ao contentor. Se a composição for bem-sucedida, as importações da peça serão preenchidas, mas as exportações da peça não estarão disponíveis para outras peças e nenhuma importação será registada para recomposição.
CompositionContainer Os objetos devem ser sempre descartados. Quando o Dispose método é chamado, o CompositionContainer objeto também descarta todas as partes que criou.
Um CompositionContainer objeto que pode ser acedido a partir de múltiplos threads deve ser construído com o isThreadSafe parâmetro definido em true, usando o CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) construtor. O desempenho será ligeiramente mais lento quando isThreadSafe for true, por isso recomendamos que defina este parâmetro para false em cenários single-threaded. A predefinição é false.
Warning
A CompositionContainer nunca deve importar-se a si próprio, nem a uma parte que tenha uma referência a ela. Tal referência poderia permitir que uma peça não confiável acedisse a todas as peças do contentor.
Construtores
| Name | Description |
|---|---|
| CompositionContainer() |
Inicializa uma nova instância da CompositionContainer classe. |
| CompositionContainer(ComposablePartCatalog, Boolean, ExportProvider[]) |
Inicializa uma nova instância da CompositionContainer classe com o catálogo, modo thread-safe e fornecedores de exportação especificados. |
| CompositionContainer(ComposablePartCatalog, CompositionOptions, ExportProvider[]) |
Inicializa uma nova instância da CompositionContainer classe com o catálogo, opções e fornecedores de exportação especificados. |
| CompositionContainer(ComposablePartCatalog, ExportProvider[]) |
Inicializa uma nova instância da CompositionContainer classe com os fornecedores de catálogo e exportação especificados. |
| CompositionContainer(CompositionOptions, ExportProvider[]) |
Inicializa uma nova instância da CompositionContainer classe com os fornecedores e opções de exportação especificados. |
| CompositionContainer(ExportProvider[]) |
Inicializa uma nova instância da CompositionContainer classe com os fornecedores de exportação especificados. |
Propriedades
| Name | Description |
|---|---|
| Catalog |
Obtém o ComposablePartCatalog que dá acesso ao contentor aos Export objetos. |
| Providers |
Obtém os fornecedores de exportação que fornecem acesso ao contentor a objetos adicionais ComposablePartCatalog . |
Métodos
| Name | Description |
|---|---|
| Compose(CompositionBatch) |
Adiciona ou remove as partes especificadas CompositionBatch do recipiente e executa a composição. |
| Dispose() |
Liberta todos os recursos usados pela instância atual da CompositionContainer classe. |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo CompositionContainer e opcionalmente liberta os recursos geridos. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetExport<T,TMetadataView>() |
Devolve a exportação com o nome do contrato derivado do parâmetro de tipo especificado. Se não houver exatamente uma exportação correspondente, é lançada uma exceção. (Herdado de ExportProvider) |
| GetExport<T,TMetadataView>(String) |
Devolve a exportação com o nome do contrato especificado. Se não houver exatamente uma exportação correspondente, é lançada uma exceção. (Herdado de ExportProvider) |
| GetExport<T>() |
Devolve a exportação com o nome do contrato derivado do parâmetro de tipo especificado. Se não houver exatamente uma exportação correspondente, é lançada uma exceção. (Herdado de ExportProvider) |
| GetExport<T>(String) |
Devolve a exportação com o nome do contrato especificado. Se não houver exatamente uma exportação correspondente, é lançada uma exceção. (Herdado de ExportProvider) |
| GetExportedValue<T>() |
Devolve o objeto exportado com o nome do contrato derivado do parâmetro de tipo especificado. Se não houver exatamente um objeto exportado correspondente, é lançada uma exceção. (Herdado de ExportProvider) |
| GetExportedValue<T>(String) |
Devolve o objeto exportado com o nome do contrato especificado. Se não houver exatamente um objeto exportado correspondente, é lançada uma exceção. (Herdado de ExportProvider) |
| GetExportedValueOrDefault<T>() |
Recebe o objeto exportado com o nome do contrato derivado do parâmetro de tipo especificado ou do valor padrão para o tipo especificado, ou lança uma exceção se houver mais do que um objeto exportado correspondente. (Herdado de ExportProvider) |
| GetExportedValueOrDefault<T>(String) |
Recebe o objeto exportado com o nome do contrato especificado ou o valor padrão para o tipo especificado, ou lança uma exceção se houver mais do que 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) |
Recebe todos os objetos exportados com o nome do contrato especificado. (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(ImportDefinition) |
Recebe todas as exportações que correspondem às condições da definição de importação especificada. (Herdado de ExportProvider) |
| GetExports(Type, Type, String) |
Recebe todas as exportações com o nome do contrato especificado. (Herdado de ExportProvider) |
| GetExports<T,TMetadataView>() |
Recebe todas as exportações com o nome do contrato derivado do parâmetro de tipo especificado. (Herdado de ExportProvider) |
| GetExports<T,TMetadataView>(String) |
Recebe todas as exportações com o nome do contrato especificado. (Herdado de ExportProvider) |
| GetExports<T>() |
Recebe todas as exportações com o nome do contrato derivado do parâmetro de tipo especificado. (Herdado de ExportProvider) |
| GetExports<T>(String) |
Recebe todas as exportações com o nome do contrato especificado. (Herdado de ExportProvider) |
| GetExportsCore(ImportDefinition, AtomicComposition) |
Devolve uma coleção de todas as exportações que correspondem às condições do objeto especificado ImportDefinition . |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnExportsChanged(ExportsChangeEventArgs) |
Eleva o ExportsChanged evento. (Herdado de ExportProvider) |
| OnExportsChanging(ExportsChangeEventArgs) |
Eleva o ExportsChanging evento. (Herdado de ExportProvider) |
| ReleaseExport(Export) |
Liberta o objeto especificado Export do CompositionContainer. |
| ReleaseExport<T>(Lazy<T>) |
Remove a exportação especificada da composição e liberta os seus recursos, se possível. |
| ReleaseExports(IEnumerable<Export>) |
Liberta um conjunto de Export objetos a partir do CompositionContainer. |
| ReleaseExports<T,TMetadataView>(IEnumerable<Lazy<T,TMetadataView>>) |
Remove uma coleção de exportações da composição e liberta os seus recursos, se possível. |
| ReleaseExports<T>(IEnumerable<Lazy<T>>) |
Remove uma coleção de exportações da composição e liberta os seus recursos, se possível. |
| SatisfyImportsOnce(ComposablePart) |
Satisfaz as importações do objeto especificado ComposablePart sem o registar para recomposição. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TryGetExports(ImportDefinition, AtomicComposition, IEnumerable<Export>) |
Recebe todas as exportações que cumprem as condições da importação especificada. (Herdado de ExportProvider) |
evento
| Name | Description |
|---|---|
| ExportsChanged |
Ocorre quando as exportações mudam ExportProvider . (Herdado de ExportProvider) |
| ExportsChanging |
Ocorre quando as exportações fornecidas estão a mudar. (Herdado de ExportProvider) |
Métodos da Extensão
| Name | Description |
|---|---|
| ComposeExportedValue<T>(CompositionContainer, String, T) |
Cria uma parte a partir do objeto especificado sob o nome do contrato especificado e compõe-a no recipiente de composição especificado. |
| ComposeExportedValue<T>(CompositionContainer, T) |
Cria uma parte a partir do valor especificado e compõe-na no recipiente de composição especificado. |
| ComposeParts(CompositionContainer, Object[]) |
Cria partes componíveis a partir de um array de objetos atribuídos e compõe-nas no contentor de composição especificado. |
| SatisfyImportsOnce(ICompositionService, Object, ReflectionContext) |
Compõe a parte especificada usando o serviço de composição especificado, com a recomposição desativada e usando o contexto de reflexão especificado. |
| SatisfyImportsOnce(ICompositionService, Object) |
Compõe a parte especificada utilizando o serviço de composição especificado, com a recomposição desativada. |