我似乎无法将二进制操作应用于lambda表达式,委托和方法组.
dynamic MyObject = new MyDynamicClass();
MyObject >>= () => 1 + 1;
Run Code Online (Sandbox Code Playgroud)
第二行给我错误: Operator '>>=' cannot be applied to operands of type 'dynamic' and 'lambda expression'
为什么?
操作员功能不是由我的自定义TryBinaryOperation覆盖决定的吗?
vcs*_*nes 13
这不是问题MyDynamicClass,问题是你不能将lambda表达式作为动态.但是,这似乎确实有效:
dynamic MyObject = new MyDynamicClass();
Func<int> fun = () => 1 + 1;
var result = MyObject >>= fun;
Run Code Online (Sandbox Code Playgroud)
如果TryBinaryOperation看起来像这样:
result = ((Func<int>) arg)();
return true;
Run Code Online (Sandbox Code Playgroud)
然后result将是2.您可以使用它binder.Operation来确定这是哪个二进制操作.
| 归档时间: |
|
| 查看次数: |
1773 次 |
| 最近记录: |