Casting IronPython C#隐式运算符在python中不起作用
我正在用IronPython编写DSL。C#中的重载运算符和使用 在python中,它们可以正常工作,直到到达赋值(Casting IronPython C#隐式运算符在python中不起作用,casting,ironpython,implicit-conversion,Casting,Ironpython,Implicit Conversion,我正在用IronPython编写DSL。C#中的重载运算符和使用 在python中,它们可以正常工作,直到到达赋值(=)操作符 使用隐式强制转换重载在C#端解决了这个问题,但在python中不起作用 这是再现错误的最小示例: 类浮点值 { 公共浮动值(浮动值) { 这个值=值; } 公共静态隐式运算符FloatValue(float value) { 返回新的浮点值(value); } 公众浮动价值; } 然后我执行: FloatValue=5.0f//它可以工作!!! 但在Python
=
)操作符
使用隐式强制转换重载在C#端解决了这个问题,但在python中不起作用
这是再现错误的最小示例:
类浮点值
{
公共浮动值(浮动值)
{
这个值=值;
}
公共静态隐式运算符FloatValue(float value)
{
返回新的浮点值(value);
}
公众浮动价值;
}
然后我执行:
FloatValue=5.0f//它可以工作!!!
但在Python中:
#value已经是FloatValue的一个实例,它来自某个地方。已经考虑过了
#一个不可变的值,因此生成新实例没有问题。
值=5.0#指定值,但不起作用:(
我得到以下例外情况:
期望的浮点值,获取浮点值
如何使其工作?Python不支持单精度浮点值。因此,文本5.0(在IronPython中)表示为 您可以将DSL更改为使用双精度,也可以通过添加
public static implicit operator FloatValue(double value)
{
return new FloatValue(Convert.ToSingle(value));
}