Считается ли использование динамики плохой практикой?
В 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);