Table des matières:
- Définition - Que signifient les attributs directionnels?
- Techopedia explique les attributs directionnels
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 objet avec des informations relatives au flux directionnel de données entre l'appelant et l'appelé.
Les attributs directionnels contrôlent le marshaling - où un objet est préparé pour le transfert à travers une application ou une limite de processus - de la direction et des valeurs de retour du paramètre de méthode. Les attributs directionnels sont appliqués pour modifier le marshaling d'exécution lors de la communication du code managé, qui est exécuté par le Common Language Runtime (CLR), et du code non managé, qui est exécuté en dehors du contrôle du CLR.
Techopedia explique les attributs directionnels
InAttribute et OutAttribute sont les deux attributs directionnels C # utilisés pour mapper aux attributs IDL (Component Object Model) du composant objet modèle (COM). InAttribute correspond à et OutAttribute correspond à. La valeur de retour de 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 aux paramètres de méthode, afin que la bibliothèque de types d'exportation définisse correctement les bits d'entrée / sortie.
En appliquant InAttribute et OutAttribute dans des tableaux et des types non blittables formatés (qui n'ont pas de représentation de mémoire gérée et non gérée commune), l'appelant voit des modifications de l'appelé. 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,
- (Aucun 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 le transfert de données appelées. 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 envoie une valeur d'entrée à une méthode de composant COM, qui calcule le résultat de la valeur d'entrée et renvoie le résultat au client. Des 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 la méthode au moment de la conception
- Pris en charge pour l'interopérabilité COM et l'appel de plate-forme 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 de retour entre la mémoire gérée et non gérée. Si les attributs directionnels ne sont pas définis, le marshaleur détermine le flux directionnel en fonction du type de paramètre et du modificateur (le cas échéant). Le marshaleur fonctionne de la manière suivante:
- Il n'écrase pas les données passées en tant que paramètre "In" à partir du code non managé. Ainsi, seules les données en lecture seule, comme 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 en fonction des paramètres d'entrée / sortie.
