Ton*_*elo 5 .net c# casting dynamic-language-runtime dynamic
我有一个DynamicObject的子类,我想为原始类型实现隐式转换,就像DO的显式转换方法TryConvert一样; 也就是说,无需编写多个隐式运算符[type]函数.
用法:
dynamic myDynamicObject = new MyDynamicObject("1");
int sum = 1 + myDynamicObject; // instead of int i = 1 + (int)myDynamicObject;
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果可能,怎么样?
这里有几件事情.
首先,您正在执行二进制操作.因此,您还需要覆盖TryBinaryOperation方法.在转换之前,它将首先被调用.然后从TryBinaryOperation方法执行转换.
其次,无论出于何种原因,只有在编写如下语句时才调用TryBinaryOperation:
int sum = myDynamicObject + 1;
Run Code Online (Sandbox Code Playgroud)
从我现在看来,订单很重要.我将与DLR团队核实这是一个错误或预期的行为.
更新: 这不是一个错误.要同时支持"1 + myDynamicObject"和"myDynamicObject + 1",您不仅需要TryBinaryOperation,还需要TryBinaryOperationFromRight,这是当前DynamicObject根本没有的.
| 归档时间: |
|
| 查看次数: |
1194 次 |
| 最近记录: |