J'ai examiné les implémentations d'interface explicites dans IL. La méthode Method
dans la classe suivante (interface IA
a une seule Method()
sur elle):Comment les implémentations d'interface explicites sont-elles implémentées dans IL?
public class B : IA
object IA.Method() {
/* code */
}
}
est compilé à la signature de la méthode IL suivante:
.method private hidebysig newslot virtual final instance object IA.Method() cil managed {
.override IA::Method
/* code */
}
Ma question est - pourquoi le nom de la méthode dans IL IA.Method()
, plutôt que simplement droite Method
? Qu'est-ce que cela signifie réellement, et pourquoi cela ne fonctionne-t-il pas si on l'oublie? Je ne trouve rien dans la spécification ECMA ou google à ce sujet.
Aaah, à droite. Je ne pouvais pas trouver dans la spécification où cette syntaxe/comportement est défini. – thecoop