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.