Значение результата при реализации методов void через DynamicObject
-
19-09-2019 - |
Вопрос
Я смотрю на примеры переопределения TryInvokeMember
на DynamicObject
реализовать привязку динамического метода.Подпись выглядит следующим образом
public virtual bool TryInvokeMember(
InvokeMemberBinder binder,
Object[] args,
out Object result
)
Очевидно result
используется для передачи результата обратно вызывающему.
Поскольку нет перегрузки для TryInvokeMember
без result
out параметр, я предполагаю, что этот метод также должен обрабатывать методы void.В таком случае существуют ли какие-либо рекомендации для чего result
должно быть установлено значение?
Реализация по умолчанию на DynamicObject
Наборы result
в null, и это также было бы моим выбором по умолчанию, но я не смог найти никаких упоминаний об этом в примерах.Существуют ли какие-либо рекомендации для этого?Имеет ли вообще значение, каков будет результат?
Решение
Да, просто используйте null в этом случае.
Раньше здесь было несколько подобных вопросов: Как мне выразить вызов метода void как результат DynamicMetaObject.BindInvokeMember? Этот посвящен IDynamicMetaObjectProvider , но DynamicObject - это всего лишь одна из его реализаций.Короче говоря, DLR всегда что-то возвращает, он не позволяет возвращать void.
Я посмотрю, что я могу сделать с документами MSDN.Я могу добавить примечание об этом к DynamicObject.Попробуйте вызвать Member.
Другие советы
Я думаю, это не имеет значения, так как результат все равно будет проигнорирован...