从System.Decimal到MyType的无效转换

时间:2011-11-21 22:12:25

标签: c# .net devexpress

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

编辑该字段时,我收到标题中提到的错误。 但是我在该类型中添加了隐式和显式方法,这些方法允许我执行以下操作:

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

我该怎么做才能解决这个错误?该错误是否与不恰当的DevExpress设置有关?

2 个答案:

答案 0 :(得分:2)

您需要添加另一个隐式运算符重载来实现您的目标。 提供保存double的内部值名为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;
}

答案 1 :(得分:0)

我认为问题在于可能会涉及一些拳击

//Works
decimal d = 12.5;
myType m = d;

//Does not work
object o = d;
myType m2 = o;