Это ошибка ExpressionTrees? # 2
Похоже, что компилятор ExpressionTrees должен быть близок со спецификацией C # во многих случаях, но в отличие от C # нет поддержки для преобразования изdecimal
любомуenum-type
:
using System;
using System.Linq.Expressions;
class Program
{
static void Main()
{
Func<decimal, ConsoleColor> converter1 = x => (ConsoleColor) x;
ConsoleColor c1 = converter1(7m); // fine
Expression<Func<decimal, ConsoleColor>> expr = x => (ConsoleColor) x;
// System.InvalidOperationException was unhandled
// No coercion operator is defined between types
// 'System.Decimal' and 'System.ConsoleColor'.
Func<decimal, ConsoleColor> converter2 = expr.Compile();
ConsoleColor c2 = converter2(7m);
}
}
Другие редко используемые явные преобразования C #, такие какdouble -> enum-type
существует и работает, как описано в спецификации C #, но неdecimal -> enum-type
, Это ошибка?