Я бы сказал «нет», но не начинайте использовать его безумно. На самом деле, dynamic
, исходя из того, что я тестировал, быстрее , чем базовое отражение, поскольку оно сохраняет делегатов (а не использует отражение Invoke
все время). В частности, две сильные стороны:
- вызов общих методов (
MakeGenericMethod
и т. Д. Просто так больно)
- звонящие операторы
Однако, есть способы делать то, что вам нужно с интерфейсами и т.д .; dynamic
для нединамического типа на самом деле равносильно типизированию по типу утки. Это полезно в очень ограниченном наборе сценариев; в основном: интерфейсы будут предпочтительнее. Не исключайте их.
Недостатком dynamic
является то, что для того, чтобы быть полезным (без написания безумного кода), вы должны знать имена во время компиляции; что часто не так, иначе нас бы не было в этом рассоле! Если вы знаете только имя во время выполнения, есть другие варианты (Expression
, Delegate.CreateDelegate
, «HyperDescriptor», DynamicMethod
и т. Д.) Быстрого доступа к данным.