Неверное приведение от System.Decimal к MyType - PullRequest
1 голос
/ 22 ноября 2011

Я создал MyType(struct) в C #, который используется для отображения данных в компоненте DevExpress GridControl.

При редактировании этого поля я получаю сообщение об ошибке, указанное в заголовке. Однако я добавил неявные и явные методы к этому типу, которые позволяют мне делать что-то вроде:

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

Что я могу сделать, чтобы исправить эту ошибку? Эта ошибка связана с неправильными настройками DevExpress?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Вам потребуется добавить еще одну неявную перегрузку оператора для достижения вашей цели. При условии, что внутреннее значение, содержащее ваш двойник, называется 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;
}
0 голосов
/ 22 ноября 2011

Думаю, проблема в том, что может быть задействован какой-то бокс

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

//Does not work
object o = d;
myType m2 = o;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...