2010-02-15 25 views
5

在C#4中,当从DynamicObject派生并重写TryInvokeMember时,如何确定在调用站点提供的任何参数是否已通过out或ref语义传递?我可以在提供的绑定器中看到包含此​​信息的一些私有字段(即Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder.ArgumentInfo属性),但似乎无法访问。我认为这些信息必须在某处可用,否则会严重地限制人们对提供的输入的了解。C#4:确定动态调用中的参数传递语义

回答

2

我跟DLR团队谈过这件事。不幸的是,答案是否定的,这些信息不适用于DynamicObject。

原因是ref/out参数非常特定于C#。动态对象可以在多种语言之间共享,并不是所有的语言都有这些符号。 DynamicObject是“按值调用”的,因此您的对象可以被不同的API使用。

+0

感谢您的帮助。我怀疑这是不可能的。 – 2010-02-22 14:37:51