Я пытаюсь выполнить синтаксический анализ дерева LambdaExpression, используя DynamicExpression.ParseLambda, но не могу его правильно проанализировать при использовании string.Equals с перечислением StringComparison.
Я пробовал:
а) с использованием StringComparison, но я получаю ошибку «Неизвестный идентификатор« StringComparison »».
b) используя полное пространство имен System.StringComparison, но я получаю ошибку «Неизвестный идентификатор« Система »».
[TestMethod()]
public void CanParseStringEqualsWithEnum()
{
var input = @"p0.Equals(""Testing"", StringComparison.InvariantCultureIgnoreCase)";
var p0 = Expression.Parameter(typeof(string), "p0");
System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { p0 }, typeof(bool), input);
}
Удаление StringComparison работает.
[TestMethod()]
public void CanParseStringEqualsWithEnum()
{
var input = @"p0.Equals(""Testing"")";
var p0 = Expression.Parameter(typeof(string), "p0");
System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { p0 }, typeof(bool), input);
}
Я мог бы выполнить .ToUpper () для обеих строк и сравнить таким образом, но я знаю, что это не охватывает все сценарии, и лучше использовать StringComparison.