¿El uso de la dinámica se considera una mala práctica?
En C #, alguien puede hacer:
MyClass myInstance = new MyClass();
dynamic mydynamicInstance = myInstance;
Y luego, invoque un método, como:
//This method takes a MyClass argument and does something.
Caller.InvokeMethod(myDynamicInstance);
Ahora, esto conducirá a la determinación del tipo myInstance en tiempo de ejecución y, si es válido, elCaller.InvokeMethod
será llamado normalmente.
Ahora, mi pregunta es si esto se considera una mala práctica para usardynamic
, especialmente en los siguientes casos:
1)InvokeMethod
crea una instancia de otra instancia del tipo myDynamicInstance, utilizando la reflexión en el interior.
2) Hay una clase base abstractaMyBaseClass
y una serie de subclases de la misma, incluyendoMyBaseClass
. Si tenemos varios métodos sobrecargados deInvokeMethod
para todas esas clases derivadas, ¿podríamos usarlo para permitir en el tiempo de ejecución la determinación del tipo y luego la invocación adecuada mediante la sobrecarga del método (o enlace tardío en la llamada de un método de esa clase) ?:
public abstract class MyBaseClass {/*...*/}
public class MyClass : MyBaseClass {/*...*/}
public class MyAnotherClass : MyBaseClass {/*...*/}
MyBaseClass myBaseClassRef = new MyClass();
dynamic myDynamicInstance = myBaseClassRef;
Caller.InvokeMethod(myDynamicInstance);