У меня есть класс, объявленный так:
public abstract class CrmAttribute <T> : ICrmAttribute
{
}
И в одном из следующих методов у меня есть этот
castedValue = (T)value;
castedValue
, который затем используется в других методахвведите T
в качестве параметра.
Моя проблема заключается в том, что дело возникло так, что приведенный выше бросок выдает InvalidCastException
.
Из того, что я могу сказать, это один конкретный случай;В Dynamics 2011 Microsoft окончательно отошла от пользовательских типов, таких как CRMNumber
, и перешла к внутренним типам .Net, но не для всех случаев.Из тех, что остаются, это сложный тип Money
, который имеет одно свойство .Value
, которое содержит десятичную дробь.Именно здесь выдается мое исключение, так как я не могу привести десятичную к типу Money.Хотя объект Money
по сути является Decimal
.
Я все еще довольно новичок в дженериках, и большая часть этого является унаследованным кодом, поэтому я хорошо знаю ответ правильный это не делать это само по себе, но все, что я хочу сделать, - это иметь возможность создавать свое собственное неявное приведение типа Money
к Decimal
так, чтобы строка, использующая T
, действовала правильно.
Возможно ли это?