3

我正在查看用于覆盖以实现动态方法绑定的TryInvokeMember示例DynamicObject。签名如下

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

显然result是用来将结果传回给调用者的。

由于没有 out 参数就没有重载TryInvokeMemberresult我假设这个方法也必须处理 void 方法。在那种情况下,是否有关于result应该设置什么的指导方针?

DynamicObject设置为 null的默认实现result,这也是我的默认选择,但我无法在示例中找到任何提及。有没有这方面的指导方针?结果是什么重要吗?

4

2 回答 2

4

是的,在这种情况下只需使用 null 。

之前这里有一些类似的问题:如何将 void 方法调用表示为 DynamicMetaObject.BindInvokeMember 的结果? 这个是关于 IDynamicMetaObjectProvider 的,但 DynamicObject 只是它的实现之一。很快,DLR 总会返回一些东西,它不允许返回 void。

我会看看我能对 MSDN 文档做些什么。我可能会在DynamicObject.TryInvokeMember中添加关于此的注释。

于 2010-03-11T02:51:19.733 回答
0

我认为没关系,因为无论如何结果都会被忽略......

于 2010-03-10T13:24:42.690 回答