L’utilisation du modèle dynamique peut-être ? Vous pouvez appeler toute méthode/propriété à l’aide du mot clé dynamic, droite ? Comment vérifier si la méthode existe avant d’appeler myDynamicObject.DoStuff(), par exemple ?
Réponses
Trop de publicités?Ne serait-il pas préférable de ne pas utiliser tous les types de dynamiques pour cela, et laissez votre classe implémente une interface. Ensuite, vous pouvez vérifier au moment de l'exécution si un objet implémente cette interface, et donc, a l'attendu de la méthode (ou la propriété).
public interface IMyInterface
{
void Somemethod();
}
IMyInterface x = anyObject as IMyInterface;
if( x != null )
{
x.Somemethod();
}
Je pense que c'est la seule façon correcte.
La chose que vous faites allusion à l'est de duck-typing, qui est utile dans le cas où vous savez déjà que l'objet a de la méthode, mais le compilateur ne peut pas contrôler. Cela est utile pour COM interop scénarios, par exemple. (consultez cet article)
Si vous souhaitez les combiner en tapant duck, de réflexion, par exemple, alors je pense que vous êtes absent le but de canard-typage.