来自系统的无效Cast.十进制为MyType

本文关键字:十进制 MyType Cast 无效 系统 | 更新日期: 2023-09-27 18:15:32

我在c#中创建了MyType(struct),用于在DevExpress GridControl组件中显示数据。

当编辑该字段时,我得到标题中提到的错误。然而,我已经为该类型添加了隐式和显式方法,允许我做以下事情:

MyType x = 45;
MyType x = "45"; ...

我能做些什么来修复这个错误?该错误是否与不适当的DevExpress设置有关?

来自系统的无效Cast.十进制为MyType

您需要添加另一个隐式操作符重载来实现您的目标。提供保存双精度对象的内部值命名为internalValue,例如:

public static implicit operator MyType (double dblValue)
{ 
    MyType myType = new MyType(); 
    myType.internalValue = dblValue as double;
    if (myType.internalValue == default(double))
        myType.internalValue = System.Convert.ToDouble(dblValue);
    return myType;
}

我认为问题是可能涉及到一些框

//Works
decimal d = 12.5;
myType m = d;
//Does not work
object o = d;
myType m2 = o;