Comunicação entre os contêineres e componentes
Um contêiner é um nexus para comunicação entre o aplicativo cliente e os componentes que ele contém.Um aplicativo pode obter referências a componentes dentro do contêiner sem saber o nome real ou a identidade do componente.O componente também pode interagir com o aplicativo cliente por meio do contêiner de várias maneiras.
O objeto de contêiner expõe os componentes nela por meio de sua Components propriedade. Esta propriedade é uma propriedade indexada que retorna um IComponent objeto de referência. Componentes são controladas em cada fila primeiro a entrar e podem ser acessados por meio do índice usando a seguinte sintaxe:
Imports System.ComponentModel
Dim MyContainer As Container
Dim xComponent as IComponent
xComponent = MyContainer.Components(0)
using System.ComponentModel;
Container MyContainer = new Container();
IComponent xComponent;
xComponent = MyContainer.Components[0];
Componentes podem ser adicionados a um contêiner com ou sem um nome.Se você souber o nome do componente que está se referindo, você também pode obter a referência através de contêiner usando esse nome, conforme mostrado no exemplo a seguir:
xComponent = MyContainer.Components("myComponent")
xComponent = MyContainer.Components["myComponent"];
Observe que o Components propriedade para retornar uma IComponent fazer referência e não permitirá que você a métodos de acesso e propriedades do componente que não são implementadas por interface.
O componente se comunica com o contêiner principalmente por meio de sua Site propriedade. Por meio de Site, o componente pode obter uma referência para o IContainer interface implementada pelo contêiner, sistema autônomo mostrado abaixo:
Dim myComponent As New Component()
Dim myIContainer as IContainer
myIContainer = myComponent.Site.Container
Component myComponent = new Component();
IContainer myIContainer;
myIContainer = myComponent.Site.Container;
A mesma referência também é retornada pelo Container propriedade. Isso pode ser pensado sistema autônomo um atalho: A referência ainda é fornecida por meio de ISite objeto, mas não explicitamente no caso.
O componente pode também obter serviços do contêiner (se fornecidas) chamando Método IServiceProvider.GetService.Esse método retorna um objeto do tipo especificado, sistema autônomo mostrado abaixo:
Dim myComponent As Component
Dim myWidget As Widget
Dim serviceObject As Object
' This returns an object of type Widget that is supplied by the container.
serviceObject = myComponent.Site.GetService(GetType(Widget))
myWidget = CType(serviceObject, Widget)
Component myComponent = new Component();
Widget myWidget;
object serviceObject;
// This returns an object of type Widget that is supplied by the container.
serviceObject = myComponent.Site.GetService(System.Type.GetType("CommunicateCS.Widget"));
myWidget = (Widget)serviceObject;
Para receber um objeto por meio de GetService, ele deve ser implementado em uma classe de contêiner herdadas. The GetService método para o Container classe deve ser substituída e o código para fornecer o objeto de serviço implementado.
Consulte também
Tarefas
Como: Criar componente Containers
Como: Estender contêineres de componente