Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais

Communication entre les conteneurs et leurs composants

Un conteneur est un canal de communication entre l'application cliente et les composants qu'il renferme. Une application peut obtenir des références aux composants du conteneur sans connaître leur nom ou leur identité exactes. Le composant peut également interagir de diverses façons avec l'application cliente par le biais du conteneur.

L'objet conteneur expose les composants qu'il renferme par le biais de sa propriété Components. Cette propriété indexée retourne un objet référence IComponent. Les composants sont suivis selon la règle du « premier entré premier sorti » et sont accessibles par le biais de l'index au moyen de la syntaxe suivante :

using System.ComponentModel;
Container MyContainer = new Container();
IComponent xComponent;
xComponent = MyContainer.Components[0];

Les composants peuvent être ajoutés au conteneur avec ou sans nom. Si vous connaissez le nom du composant auquel vous faites référence, vous pouvez également obtenir la référence par le biais du conteneur en vous servant de ce nom, comme le montre l'exemple suivant :

xComponent = MyContainer.Components["myComponent"];

Notez que la propriété Components retourne une référence IComponent et ne vous permet pas d'accéder aux méthodes et propriétés du composant qui ne sont pas implémentées par cette interface.

Le composant communique avec le conteneur en premier lieu par le biais de sa propriété Site. Par l'intermédiaire de la propriété Site, le composant peut obtenir une référence à l'interface IContainer implémentée par le conteneur, comme le montre l'exemple suivant :

Component myComponent = new Component();
IContainer myIContainer;
myIContainer = myComponent.Site.Container;

La même référence est également retournée par la propriété Container. Il s'agit donc d'une sorte de raccourci : la référence est toujours fournie par le biais de l'objet ISite, mais pas explicitement dans ce cas.

Le composant peut également obtenir des services auprès du conteneur (s'ils sont fournis) en appelant la GetService. Cette méthode retourne un objet du type spécifié, comme le montre l'exemple suivant :

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;

Pour qu'un objet soit obtenu à l'aide de GetService, il doit être implémenté dans une classe conteneur héritée. La méthode GetService de la classe Container doit être substituée et le code de fourniture du service implémenté.

Afficher: