Sdílet prostřednictvím


Komunikace mezi kontejnery a komponentami

Kontejner je nexu pro komunikaci mezi klientskou aplikací a komponent, které obsahuje.Aplikace může získat odkazy na komponenty v kontejneru bez znalosti skutečné jméno nebo identitě součásti.Komponenty mohou také spolupracovat s aplikací klienta prostřednictvím kontejneru v mnoha různými způsoby.

Objekt kontejneru poskytuje součásti obsahuje přes jeho Components vlastnost.Tato vlastnost je indexovaná vlastnost, která vrací IComponent odkaz na objekt.Součásti jsou sledovány na základě budou ve a jsou přístupné pomocí indexu pomocí následující syntaxe:

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];

Součásti může přidat do kontejneru s nebo bez názvu.Pokud znáte název komponenty, které se týká, může dojít také odkaz prostřednictvím tohoto názvu kontejneru jak ukazuje následující příklad:

xComponent = MyContainer.Components("myComponent")
xComponent = MyContainer.Components["myComponent"];

Všimněte si, že Components vrátí vlastnost IComponent odkaz, nebude možné přístupové metody a vlastnosti součásti, které nejsou implementovány pomocí tohoto rozhraní.

Součást komunikuje s kontejnerem především prostřednictvím jeho Site vlastnost.Prostřednictvím Site, komponenty lze získat odkaz na IContainer rozhraní implementované v kontejneru, jak je ukázáno níže:

Dim myComponent As New Component()
Dim myIContainer as IContainer
myIContainer = myComponent.Site.Container
Component myComponent = new Component();
IContainer myIContainer;
myIContainer = myComponent.Site.Container;

Také vrácené stejný odkaz Container vlastnost.To lze představit jako zástupce: odkaz je i nadále poskytována prostřednictvím ISite objektu, ale v tomto případě není explicitně.

Komponenty lze také získat služby z kontejneru (pokud jsou dodávány) voláním Metody IServiceProvider.GetService.Tato metoda vrátí objekt zadaného typu, jak je ukázáno níže:

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;

Obdržet prostřednictvím objektu GetService, musí být provedeny ve třídě zděděné kontejneru.GetService Metodu Container třída by měla být přepsána a implementován kód objektu služby poskytovat.

Viz také

Úkoly

Postupy: Vytváření kontejnerů komponent

Postupy: Rozšíření kontejnerů komponent

Koncepty

Kontejnery, weby a komponenty