¿Cómo invoco un método de extensión utilizando la reflexión?

Aprecio que se hayan hecho preguntas similares antes, pero estoy luchando para invocar el LinqDónde Método en el siguiente código. Estoy buscando usar la reflexión para llamar dinámicamente a este método y también para construir dinámicamente el delegado (o lambda) utilizado en elDónde cláusula. Este es un ejemplo de código corto que, una vez que esté funcionando, ayudará a formar parte de un DSL interpretado que estoy creando. Aclamaciones.

    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;
    }

Respuestas a la pregunta(5)

Su respuesta a la pregunta