Attributs directionnels

Auteur: Lewis Jackson
Date De Création: 8 Peut 2021
Date De Mise À Jour: 1 Juillet 2024
Anonim
Tutoriel jQuery : Survol directionnel
Vidéo: Tutoriel jQuery : Survol directionnel

Contenu

Définition - Que signifient les attributs directionnels?

Les attributs directionnels, en C #, sont des balises utilisées pour spécifier le (s) paramètre (s) de méthode d'objet avec des informations relatives au flux directionnel de données entre l'appelant et l'appelé.

Les attributs directionnels contrôlent le marshaling - lorsqu'un objet est préparé pour le transfert à travers une application ou une frontière de processus - des paramètres de méthode direction et valeurs de retour. Les attributs directionnels sont appliqués pour modifier le marshaling d'exécution lors de la communication du code géré, qui est exécuté par le Common Language Runtime (CLR), et du code non géré, exécuté en dehors du contrôle du CLR.


Introduction à Microsoft Azure et au nuage Microsoft | Tout au long de ce guide, vous apprendrez ce qu'est le cloud computing et comment Microsoft Azure peut vous aider à migrer et à exploiter votre entreprise à partir du cloud.

Techopedia explique les attributs directionnels

InAttribute et OutAttribute sont les deux attributs directionnels C # utilisés pour mapper les attributs IDL (Component Object Models). InAttribute maps to et OutAttribute maps to. La valeur renvoyée par la signature de la méthode gérée est mappée dans une bibliothèque de types. Il est essentiel de spécifier le bon attribut directionnel pour les paramètres de la méthode, afin que la bibliothèque de types exportatrice définisse correctement les bits In / Out.

En appliquant InAttribute et OutAttribute dans des tableaux et des types non compressés formatés (qui n'ont pas de représentation de mémoire gérée et non gérée commune), l'appelant voit les modifications appelées. Les attributs directionnels appliqués à ces types réduisent les copies inutiles lors du marshaling.

En C #, InAttribute et OutAttribute sont utilisés sous trois formes avec deux mots clés lors de la communication avec l'appelant et l'appelé, comme suit:


  • "out" - implique
  • "ref" - implique,
  • (Non spécifié) - (par défaut)

Les mots clés out et ref sont utilisés pour les types de valeur et les types de référence sérialisables. Le mot-clé ref implique que le paramètre est marshalé dans les deux sens et out implique un transfert de données appelé. Lorsque ref ou out ne sont pas utilisés, cela implique que les données sont transférées à l'appelé.

Par exemple, une application cliente .NET utilise une valeur d’entrée pour une méthode de composant COM, qui calcule le résultat de la valeur d’entrée et renvoie le résultat au client. Les attributs directionnels peuvent être appliqués aux paramètres de la méthode desservant la demande en indiquant le type de marshaling requis pour la valeur d'entrée et le résultat.

Les attributs directionnels ont les caractéristiques suivantes:


  • Facultatif et appliqué aux paramètres de méthode au moment de la conception
  • Pris en charge pour COM interop et plateforme invoquer uniquement
  • InAttribute ne peut pas être appliqué à un paramètre avec un mot clé out

Le marshaler d'interopérabilité CLR fournit un service de marshaling au moment de l'exécution en gérant les arguments d'appel de méthode et les valeurs renvoyées entre la mémoire gérée et non gérée. Si les attributs directionnels ne sont pas définis, le marshaler détermine le flux directionnel en fonction du type de paramètre et du modificateur (le cas échéant). Le marshaler fonctionne de la manière suivante:

  • Il n'écrase pas les données transmises en tant que paramètre "In" à partir de code non géré. Ainsi, seules les données en lecture seule, telles que les données accédées simultanément, peuvent être transmises.
  • Lors du passage d'objets - tels que des chaînes de base ou binaires (BSTR) - avec une allocation de mémoire établie, la séquence d'allocation / désallocation appropriée est suivie conformément aux paramètres In / Out.
Cette définition a été écrite dans le con de C #