CompositionContainer Classe

Definição

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
CompositionContainer
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.

Aplica-se a

Ver também