在C#4中,当从DynamicObject派生并覆盖TryInvokeMember时,如何确定在调用站点提供的任何参数是否已通过out或ref语义传递?我可以在提供的绑定器中看到包含此信息的一些私有字段(即Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder.ArgumentInfo属性),但它似乎无法访问.我认为这些信息必须在某处可用,否则会严重限制一个人对所提供输入的了解.
我与 DLR 团队讨论了此事。不幸的是,答案是否定的,此信息不适用于 DynamicObject。
原因是 ref/out 参数非常特定于 C#。动态对象可以在多种语言之间共享,但并非所有语言都有这些符号。DynamicObject 是“按值调用”,因此您的对象可以由不同的 API 使用。
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |