Значение результата при реализации методов void через DynamicObject

StackOverflow https://stackoverflow.com/questions/2416890

Вопрос

Я смотрю на примеры переопределения 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.

Другие советы

Я думаю, это не имеет значения, так как результат все равно будет проигнорирован...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top