Вот эта
багаАвтор: 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. В обычном коде всё работает как надо.
Куда положено эту багу уже сабмитили не раз. Кто у нас поближе к телу, можете прояснить ситуацию?