通过DynamicObject实现void方法时的结果值

时间:2010-03-10 12:43:33

标签: .net dynamic c#-4.0 dynamicobject

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

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

显然result用于将结果传递回调用者。

由于没有TryInvokeMember out参数的result没有重载,我假设此方法也必须处理void方法。在这种情况下,是否有关于result应该设置的指南?

DynamicObject上的默认实现将result设置为null,这也是我的默认选择,但我在示例中未能找到任何提及。这有什么指导方针吗?甚至结果是什么?

2 个答案:

答案 0 :(得分:4)

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

之前有一些类似的问题:How do I express a void method call as the result of DynamicMetaObject.BindInvokeMember? 这个是关于IDynamicMetaObjectProvider的,但DynamicObject只是它的一个实现。不久,DLR将始终返回某些内容,但不允许返回void。

我会看到我可以对MSDN文档做些什么。我可以在DynamicObject.TryInvokeMember上添加关于此的说明。

答案 1 :(得分:0)

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