Tag: lambda

如何使用reflection调用扩展方法?

我很感激之前已经提出了类似的问题,但我正在努力调用以下代码中的Linq Where方法。 我希望使用reflection动态调用此方法,并动态构建Where子句中使用的委托(或lambda)。 这是一个简短的代码示例,一旦工作,将有助于形成我正在构建的解释DSL的一部分。 干杯。 public static void CallWhereMethod() { List myObjects = new List(){new MyObject{Name=”Jon Simpson”}}; System.Delegate NameEquals = BuildEqFuncFor(“Name”, “Jon Simpson”); object[] atts = new object[1] ; atts[0] = NameEquals; var ret = typeof(List).InvokeMember(“Where”, BindingFlags.InvokeMethod, null, InstanceList,atts); } public static Func BuildEqFuncFor(string prop, object val) { return t => t.GetType().InvokeMember(prop,BindingFlags.GetProperty, null,t,null) == val; […]

Lambda表达式未返回预期的MemberInfo

我遇到了一个我没想到的问题。 一个例子可能比一段更好地说明我的问题: 更新:跳过最后一个代码块,以获得更具说服力的代码示例。 public class A { public string B { get; set; } } public class C : A { } 以下是方法中的一些代码: var a = typeof(C).GetMember(“B”)[0]; var b = typeof(A).GetMember(“B”)[0]; Expression<Func> c = x => xB; var d = (c.Body as MemberExpression).Member; 以下是一些比较的结果: a == b //false a == d //false b == d […]