J'essaie de comprendre à quel moment la liaison précoce ou tardive se produit en C#.
Les méthodes non virtuelles sont toujours liées par anticipation. Les méthodes virtuelles sont toujours liées tardivement : le compilateur insère du code supplémentaire pour résoudre la méthode réelle à laquelle se lier au moment de l'exécution et vérifie la sécurité des types. Le polymorphisme de sous-type utilise donc la liaison tardive.
L'appel de méthodes par réflexion est un exemple de liaison tardive. C'est nous qui écrivons le code pour y parvenir, et non le compilateur. (Par exemple, l'appel de composants COM).
VB.NET prend en charge les liaisons tardives implicites lorsque l'option Strict est désactivée. Un objet est lié tardivement lorsqu'il est affecté à une variable déclarée comme étant de type Object. Le compilateur VB insère du code pour se lier à la bonne méthode au moment de l'exécution et pour détecter les appels invalides. C# ne prend pas en charge cette fonctionnalité.
Est-ce que je vais dans la bonne direction ?
Qu'en est-il de l'appel de délégués et de l'appel d'une méthode par le biais d'une référence d'interface ? S'agit-il d'une liaison précoce ou tardive ?