Casting IronPython 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

我正在用IronPython编写DSL。C#中的重载运算符和使用 在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));
}