Я слышал, что наилучшей практикой создания экземпляра с использованием отражения является использование переменной динамического типа. Что это означает, что, когда мы используем метод Activator.CreateInstance()
(что объект возвращается) мы относим его в динамический тип вместо типа объекта:с использованием динамического с отражением
dynamic dog = Activator.CreateInstance("Zoo.Dog");
dog.Bark();
Вместо:
object dog = Activator.CreateInstance("Zoo.Dog");
Dog realDog = (Dog)dog;
realDog.Bark();
Есть ли хороший причина использовать динамику, отличную от отсутствия литья?
Пожалуйста, добавьте тег языка. – arshajii
'dynamic' предназначен для взаимодействия со скриптовыми языками или для использования с другими видами объектов, которые не имеют общего статического типа. (ASP.NET MVC 'ViewBag',' ExpandoObject' вообще и т. Д.) Кроме того, «отсутствие каста» на самом деле не совсем точно описывает, как это работает - динамические вызовы/выражения динамически обрабатываются довольно иначе, чем статические. – millimoose
Я знаю, что такое динамика. Мой вопрос в том, почему пример, показанный выше, считается наилучшей практикой при создании экземпляра с использованием рефлекса. – RiskX