2
我在IronPython中编写了一个DSL。在C#中重载运算符并在python中使用 工作正常,直到您完成赋值(=
)运算符。IronPython C#隐式运算符在python中不起作用
使用隐式转换重载解决了C#端的问题,但它在python中不起作用。
这是再现误差最小的例子:
class FloatValue
{
public FloatValue(float value)
{
this.value = value;
}
public static implicit operator FloatValue(float value)
{
return new FloatValue(value);
}
public float value;
}
然后我执行:
FloatValue value = 5.0f // It works!!!
但是在Python:
# value is already an instance of FloatValue, it comes from somewhere. It's considered
# an immutable value, so there is no problem with generating a new instance.
value = 5.0 # Assigns the value, but does not work :(
我得到下面的异常:
Expected FloatValue, got float
我该如何使它工作?