«Бинарный оператор Add не определен для типов System.String и System.String». - Действительно?

При попытке запустите следующий код:

    Expression<Func<string, string>> stringExpression = Expression.Lambda<Func<string, string>>(
        Expression.Add(
            stringParam,
            Expression.Constant("A")
        ),
        new List<ParameterExpression>() { stringParam }
    );

    string AB = stringExpression.Compile()("B");

Я получаю сообщение об ошибке, указанное в заголовке: «Бинарный оператор Add не определен для типов System.String и System.String». Так ли это на самом деле? Очевидно, в C # это работает. Выполняет ли строку s = "A" + "B" в специальном синтаксическом сахаре C #, к которому компилятор выражений не имеет доступа?

13
задан Shlomo 11 August 2011 в 14:09
поделиться