Старая бага нового шарпа
От: IT Россия linq2db.com
Дата: 16.11.14 19:24
Оценка:
Вот эта бага
Автор: IT
Дата: 02.12.13
всё ещё актуальна в VS 2015. Приведу ещё раз код здесь:

using System;
using System.Linq.Expressions;

namespace VS2013Compatibility
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Func<string>> f1 = () => 0.ToString();
            Expression<Func<string>> f2 = () => 0l.ToString();

            var mi1 = ((MethodCallExpression)f1.Body).Method;
            var mi2 = ((MethodCallExpression)f2.Body).Method;
            var mi3 = typeof(int).GetMethod("ToString", new Type[0]);

            Console.WriteLine(mi1 == mi2);
            Console.WriteLine(mi1.DeclaringType);
            Console.WriteLine(mi2.DeclaringType);
            Console.WriteLine(mi3.DeclaringType);
        }
    }
}


Проблема в том, что для примитивных типов в ExpressionTree генерируется вызов метода object.ToString, а не int.ToString/long.ToString. В обычном коде всё работает как надо.

Куда положено эту багу уже сабмитили не раз. Кто у нас поближе к телу, можете прояснить ситуацию?
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.