Считается ли использование динамики плохой практикой?

В C # кто-то может сделать:

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

И затем, вызовите метод, например:

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

Теперь это приведет к определению типа myInstance во время выполнения, и, если оно действительно,Caller.InvokeMethod будет называться нормально.

Теперь мой вопрос, если это считается плохой практикой для использованияdynamicособенно в следующих случаях:

1)InvokeMethod создает экземпляр другого экземпляра типа myDynamicInstance, используя отражение внутри.

2) Есть абстрактный базовый классMyBaseClass и ряд его подклассов, в том числеMyBaseClass, Если у нас есть несколько перегруженных методовInvokeMethod для всех этих производных классов, мы могли бы использовать это для того, чтобы разрешить во время выполнения определение типа и затем надлежащий вызов через перегрузку метода (или позднее связывание при вызове метода этого класса) ?:

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

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

Caller.InvokeMethod(myDynamicInstance);

Ответы на вопрос(2)

Ваш ответ на вопрос