Question

Je regarde les exemples permettant de passer outre TryInvokeMember sur DynamicObject pour implémenter la méthode dynamique de liaison. La signature est la suivante

public virtual bool TryInvokeMember(
    InvokeMemberBinder binder,
    Object[] args,
    out Object result
)

Il est évident que result est utilisé pour transmettre le résultat à l'appelant.

Comme il n'y a pas de surcharge pour TryInvokeMember sans le paramètre result, je suppose que cette méthode doit gérer des méthodes vides aussi. Dans ce cas, sont-il des lignes directrices pour ce result devrait être réglé?

La mise en œuvre par défaut sur les ensembles de DynamicObject result à null, et ce serait mon choix par défaut aussi bien, mais je n'ai pas pu trouver aucune mention dans les exemples. Y a-t-il des directives pour cela? Est-il important même ce que le résultat est?

Était-ce utile?

La solution

Oui, il suffit d'utiliser null dans ce cas.

Il y avait des questions similaires ici avant: Comment puis-je exprimer un appel de méthode vide à la suite de DynamicMetaObject.BindInvokeMember? Celui-ci est sur le point IDynamicMetaObjectProvider, mais DynamicObject est juste l'une de ses réalisations. Peu de temps, le DLR retournera toujours quelque chose, il ne permet pas vide de retour.

Je vais voir ce que je peux faire docs MSDN. Je peux ajouter une note sur ce à DynamicObject.TryInvokeMember .

Autres conseils

Je pense qu'il n'a pas d'importance, puisque le résultat sera ignoré quand même ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top