Como invoco um método de extensão usando reflexão?

Eu aprecio que perguntas semelhantes foram feitas antes, mas eu estou lutando para invocar o LinqOnde método no código a seguir. Eu estou olhando para usar reflexão para chamar dinamicamente este método e também dinamicamente construir o delegado (ou lambda) usado noOnde cláusula. Este é um exemplo de código curto que, uma vez trabalhando, ajudará a formar parte de uma DSL interpretada que estou construindo. Felicidades.

    public static void CallWhereMethod()
    {
        List<MyObject> myObjects = new List<MyObject>(){new MyObject{Name="Jon Simpson"}};
        System.Delegate NameEquals = BuildEqFuncFor<MyObject>("Name", "Jon Simpson");
        object[] atts = new object[1] ;
        atts[0] = NameEquals;

        var ret = typeof(List<MyObject>).InvokeMember("Where", BindingFlags.InvokeMethod, null, InstanceList,atts);
    }

    public static Func<T, bool> BuildEqFuncFor<T>(string prop, object val)
    {
        return t => t.GetType().InvokeMember(prop,BindingFlags.GetProperty,
                                             null,t,null) == val;
    }

questionAnswers(5)

yourAnswerToTheQuestion