Valor do resultado na implementação de métodos vazios via DynamicObject
-
19-09-2019 - |
Pergunta
Eu estou olhando para os exemplos para substituir TryInvokeMember
em DynamicObject
para implementar método dinâmico vinculativo. A assinatura é a seguinte
public virtual bool TryInvokeMember(
InvokeMemberBinder binder,
Object[] args,
out Object result
)
Obviamente result
é usado para passar parte de trás resultado para o chamador.
Como não há sobrecarga para TryInvokeMember
sem a result
out parâmetro, presumo que este método deve manipular métodos vazios também. Nesse caso, existem diretrizes para o que result
deve ser definido como?
A implementação padrão em conjuntos DynamicObject
result
como nulo, e que seria a minha escolha padrão bem, mas eu não tenho sido capaz de encontrar qualquer menção a isso nos exemplos. Há diretrizes para isso? Será que ainda importa o que o resultado é?
Solução
Sim, basta usar nula neste caso.
Houve algumas perguntas semelhantes aqui antes: como posso expressar uma chamada de método vazio como o resultado de DynamicMetaObject.BindInvokeMember? Este é sobre IDynamicMetaObjectProvider, mas DynamicObject é apenas uma de suas implementações. Logo, DLR sempre retornará alguma coisa, ele não permite que retornar void.
Eu vou ver o que posso fazer em relação a documentação do MSDN. Posso acrescentar uma nota sobre isso com o DynamicObject.TryInvokeMember .
Outras dicas
Eu acho que isso não importa, já que o resultado será ignorado qualquer maneira ...