Aller au contenu
EN FR

Méthodes et propriétés générées

Statut documentaire : architecture — voir Maturité et preuves.

Un membre Runtime publié est projeté vers un membre managé ordinaire lorsque sa forme ABI est supportée.

Méthodes

Le générateur de publication calcule une signature canonique à partir du type Runtime déclarant, du nom de la méthode, des types de paramètres et du type de retour. Un MethodId stable est dérivé de cette signature avant la génération vers le langage cible.

Les surcharges ne sont donc pas identifiées uniquement par leur écriture C#. Les types Runtime des paramètres et du résultat participent à l'identité ABI.

Le code applicatif généré peut ainsi rester idiomatique :

var result = catalog.FindByName(name);

pendant que l'adaptateur résout le descriptor généré vers l'invocation Runtime TypeId / MethodId correspondante.

Propriétés

Les propriétés publiées lisibles et modifiables sont émises au niveau ABI au moyen d'opérations getter/setter distinctes, tout en restant une propriété normale dans la couche managée :

var title = item.Title;
item.Title = "Updated";

La distinction ABI entre getter et setter est un détail du binding généré et ne doit pas apparaître dans le code applicatif ordinaire.

Surcharges et héritage

Le générateur suit explicitement le type déclarant et les signatures canoniques. Il enregistre aussi les types dépendants et ancêtres nécessaires à la surface générée.

Le filtrage de publication empêche d'exporter des membres d'implémentation hérités non sûrs simplement parce que la réflexion les rend visibles. Les membres explicitement publiés peuvent néanmoins être exposés lorsque la politique de publication l'autorise.

Formes non supportées

Un membre est omis lorsqu'un de ses paramètres ou son type de retour ne peut pas être publié de manière sûre. Le générateur actuel contient des gardes explicites pour certains records par valeur, certaines références de méthodes et d'autres types inaccessibles à l'ABI.

Il vaut mieux omettre ce membre que générer une méthode managée dont la représentation native serait indéfinie.

Appels locaux et distants

La forme de l'appel managé n'a pas à encoder le transport. Un adaptateur local peut dispatcher le membre vers l'ABI native ; un adaptateur RPC peut sérialiser la même identité d'invocation et les mêmes arguments vers un Runtime distant.

Voir Exécution locale et distante.