【发布时间】:2011-08-17 07:27:08
【问题描述】:
我应该如何为string.IndexOf("substring", StringComparison.OrdinalIgnoreCase)构造表达式树?
没有第二个参数我可以让它工作:StringComparison.OrdinalIgnoreCase。这些是我迄今为止的尝试:
var methodCall = typeof (string).GetMethod("IndexOf", new[] {typeof (string)});
Expression[] parms = new Expression[]{right, Expression.Constant("StringComparison.OrdinalIgnoreCase", typeof (Enum))};
var exp = Expression.Call(left, methodCall, parms);
return exp;
也试过这个:
var methodCall = typeof (string).GetMethod(method, new[] {typeof (string)});
Expression[] parms = new Expression[]{right, Expression.Parameter(typeof(Enum) , "StringComparison.OrdinalIgnoreCase")};
var exp = Expression.Call(left, methodCall, parms);
return exp;
请记住,如果我忽略 OrdinalIgnoreCase 参数,我可以让它工作。
谢谢
【问题讨论】:
-
与以往一样,当您遇到问题时,您应该说出您尝试过的问题 - 您是否遇到异常、编译时错误或错误行为?如果是某种错误,那是什么错误?
-
对不起。下次提问时我会记住这一点。我得到了一个 ArgumentException。
标签: c# reflection expression-trees linq-expressions