Apparemment, ce qui suit est valable en c# 4.0 quel que soit le type de l'objet renvoyé par GetADynamicThing()
dynamic d = GetADynamicThing();
d.Foo();
Et si le type d'exécution de d ne contient pas de méthode Foo(), une méthode RunTimeBinderException est lancé.
Y aura-t-il un facile moyen de déterminer si Foo() existe sur d ?
Sinon, nous sommes obligés de faire de la réflexion à l'ancienne sur l'objet, ou de compter sur try-catch. Je ne suis pas sûr d'aimer ces deux approches.
Mise à jour : Nous avons donc actuellement 3 options :
- Réflexion
- Attraper l'exception
- J'espère que GetADynamicThing() renvoie ce que vous attendez d'elle.
Le numéro 3 semble être l'utilisation ciblée de la dynamique qui en Les situations COM sont géniales . La raison pour laquelle j'ai posé la question à l'origine était en réponse au fait de faire quelque chose comme ceci c'est-à-dire en utilisant les méthodes d'un objet créé arbitrairement. Cela ressemble beaucoup à la mauvaise situation pour utiliser la dynamique.