O uso da dinâmica é considerado uma má prática?

Em C #, alguém pode fazer:

MyClass myInstance        = new MyClass();
dynamic mydynamicInstance = myInstance;

E então, invoque um método, como:

//This method takes a MyClass argument and does something.
Caller.InvokeMethod(myDynamicInstance);

Agora, isso levará à determinação do tipo myInstance no tempo de execução e, se for válido, oCaller.InvokeMethod será chamado normalmente.

Agora, minha pergunta é se isso é considerado uma má prática para usardynamic, especialmente nos seguintes casos:

1)InvokeMethod instancia outra instância do tipo myDynamicInstance, usando reflexão dentro.

2) Existe uma classe base abstrataMyBaseClass e várias subclasses dele, incluindoMyBaseClass. Se tivermos vários métodos sobrecarregados deInvokeMethod para todas essas classes derivadas, poderíamos usá-lo para permitir em tempo de execução a determinação do tipo e, em seguida, a chamada adequada via sobrecarga de método (ou ligação tardia na chamada de um método dessa classe) ?:

public abstract class MyBaseClass         {/*...*/}
public class MyClass        : MyBaseClass {/*...*/}
public class MyAnotherClass : MyBaseClass {/*...*/}

MyBaseClass myBaseClassRef = new MyClass();
dynamic myDynamicInstance  = myBaseClassRef;

Caller.InvokeMethod(myDynamicInstance);

questionAnswers(2)

yourAnswerToTheQuestion