Ist die Verwendung von Dynamik eine schlechte Praxis?

n C # kann jemand:

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

Und dann rufen Sie eine Methode auf, wie:

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

Now, dies führt zur Bestimmung des myInstance-Typs zur Laufzeit und, falls dieser gültig ist, desCaller.InvokeMethod wird normal aufgerufen.

Now, meine Frage ist, ob dies eine schlechte Praxis zu verwenden istdynamic, insbesondere in folgenden Fällen:

1)InvokeMethod instanziiert eine weitere Instanz des myDynamicInstance-Typs, wobei die Reflektion darin verwendet wird.

2) Es gibt eine abstrakte BasisklasseMyBaseClass und eine Reihe von Unterklassen davon, einschließlichMyBaseClass. Wenn wir eine Reihe von überladenen Methoden von @ habInvokeMethodönnen wir es für all diese abgeleiteten Klassen verwenden, um zur Laufzeit die Typbestimmung und dann den korrekten Aufruf über Methodenüberladung (oder die späte Bindung beim Aufruf einer Methode dieser Klasse) zu ermögliche

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

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

Caller.InvokeMethod(myDynamicInstance);

Antworten auf die Frage(4)

Ihre Antwort auf die Frage