Использование динамического шаблона возможно? Вы можете вызвать любой метод / свойство, используя ключевое слово dynamic, верно? Как проверить, существует ли метод, например, перед вызовом myDynamicObject.DoStuff ()?
c#
.net
methods
reflection
properties
Луис Рис
источник
источник
DynamicObject
?Ответы:
Вы могли бы написать что-то вроде этого:
Изменить: вы даже можете сделать метод расширения и использовать его следующим образом
источник
через отражение
Похоже на методы
источник
GetType()
есть метод вродеGetProperties()
. Возвращается массивPropertyInfo
. Но как я могу использоватьGetProperties()
метод?Это старый вопрос, но я просто столкнулся с ним.
Type.GetMethod(string name)
вызовет AmbiguousMatchException, если существует более одного метода с таким именем, поэтому мы лучше обработаем этот случайисточник
Не лучше ли для этого не использовать динамические типы и позволить вашему классу реализовать интерфейс. Затем вы можете проверить во время выполнения, реализует ли объект этот интерфейс, и, таким образом, имеет ожидаемый метод (или свойство).
Я думаю, что это единственный правильный путь.
То, к чему вы обращаетесь, это типизирование утки, что полезно в сценариях, когда вы уже знаете, что у объекта есть метод, но компилятор не может проверить это. Это полезно, например, в сценариях взаимодействия COM. (проверьте это статью)
Если вы хотите сочетать, например, типизацию утки с отражением, то я думаю, что вам не хватает цели типизации утки.
источник