Partager via


Appels de méthodes, de propriétés et d'événements

Un client .NET peut appeler des méthodes sur un objet COM actif, ajuster ses propriétés et intercepter les événements provenant du serveur. La coclasse Loan (C++ non managé, ATL) expose les méthodes et les propriétés qui sont illustrées dans les exemples de code figurant dans cette section.

Appel de méthodes

L'appel de méthodes sur un objet COM à partir du code managé revient exactement à appeler des méthodes sur un objet managé. Les composants COM exposant toujours une fonctionnalité par l'intermédiaire d'interfaces, vous avez la possibilité d'appeler des méthodes sur l'interface ou directement sur la coclasse COM. Une coclasse expose uniquement les membres exposés par son interface par défaut. L'exemple de code suivant appelle directement la méthode GetFirstPmtDistribution sur la coclasse importée :

MorePmts = ln.GetFirstPmtDistribution(ln.Payment, Balance, _
               Principal, Interest)
MorePmts = ln.GetFirstPmtDistribution(ln.Payment, out Balance, 
               out Principal, out Interest);

COM Interop marshale les types de données pour vous. Si, par exemple, vous passez le type System.String à un objet COM, COM Interop convertit alors le type en BSTR.

Les paramètres marqués comme [out retval] dans une bibliothèque de types sont convertis en valeurs de retour de méthodes. Le processus de conversion supprime ces paramètres de la signature managée. Par défaut, le runtime lève une exception au code managé en mappant le HRESULT d'échec à l'exception managée équivalente.

Obtention et définition de propriétés

Les interfaces COM peuvent inclure des propriétés en tant que membres d'interface. Vous pouvez obtenir ou définir une propriété exposée par un objet COM de la même manière que vous obtenez ou définissez des propriétés exposées par une classe managée. Les coclasses et les interfaces COM importées sous la forme de métadonnées dans un assembly exposent des propriétés et des méthodes d'accesseur pour chaque propriété. L'exemple de code suivant définit la propriété OpeningBalance :

ln.OpeningBalance = Convert.ToDouble(Args(1))
ln.OpeningBalance = Convert.ToDouble(Args[0]);

Pour plus d'informations sur la conversion des propriétés, consultez Conversion d'un membre importé. Pour obtenir une description plus générale des propriétés dans le .NET Framework, consultez Vue d'ensemble des propriétés.

Gestion des événements

Un client .NET peut gérer des événements déclenchés par un serveur COM de la même manière qu'il gère tout autre événement managé. Lorsque vous importez la bibliothèque de types du serveur, le processus de conversion crée des délégués que vous connectez à vos gestionnaires d'événements. Pour plus d'informations sur ce processus, consultez Gestion des événements déclenchés par une source COM.

Notez que les objets COM déclencheurs d'événements dans un client .NET requièrent deux collections Garbage Collector (GC) avant leur libération. Cela s'explique par le cycle de référence qui se déroule entre les objets COM et les clients managés. Si vous devez libérer explicitement un objet COM, appelez deux fois la méthode Collect.

Voir aussi

Tâches

Comment : mapper des HRESULT et des exceptions

Concepts

Utilisation de types COM dans du code managé
Conversion d'un membre importé
Vue d'ensemble des propriétés
Exemple COM Interop : client .NET et serveur COM

Autres ressources

Marshaling d'interopérabilité