私は次のコードを持っています:
class Program
{
public class Test
{
public string Property { get; set; }
}
static void Main(string[] args)
{
var expressionString = "Property == \"MySt\\\"ring\"";
var p = System.Linq.Expressions.Expression.Parameter(typeof(Test));
var e = System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { p }, null, expressionString);
}
}
これを実行すると、タイプParseException
例外がスローされます。要件は、引用符で囲まれた文字列リテラルを持つことです。
編集:私はまた、例外を変更せずにMyString
から\\を削除しようとしました。
誰かがいくつかのアイデアを共有できますか?
あなたが書くことができるように見えます:
"Property == \"MySt\"\"ring\""
System.Linq.Dynamicソースコードからのトークン化コードは次のとおりです。
case '"':
case '\'':
char quote = ch;
do {
NextChar();
while (textPos < textLen && ch != quote) NextChar();
if (textPos == textLen)
throw ParseError(textPos, Res.UnterminatedStringLiteral);
NextChar();
} while (ch == quote);
t = TokenId.StringLiteral;
break;