+1  A: 

Well, based on your comments there may be a discontinuity from what you have written in your question and what you are trying to do. So I'll try and cover all the bases.

If the Execute method is static and defined on a base class you need to add the BindingFlags.FlattenHierarchy to your binding flags:

 BindingFlags.InvokeMethod | BindingFlags.Public
 | BindingFlags.Static | BindingFlags.FlatternHierarchy

This seems the most likely problem because you say that it isn't finding the method, but this flag is only effective if you are searching for a static member.

On the other hand if the method isn't static then the binding flags that you have are correct, but you'll need an instance of the type to run it against. Depending on how complicated it is to construct your concrete type you may be able to get away with just using the Activator class, otherwise you may need to create a factory of some kind.

Martin Harris
Thanks. I'm doing this all wrong. The parameters are for the class, not the method. I need to create an instance of the type using those parameters and then call the method. Thanks, this has pointed me in the right direction.
Leslie
A: 

@Martin: Thanks for your help.

I'm posting this in case it might help someone else.

    private Request ExecuteAutoTransition(Type newStatus)
    {
        // No transition needed
        if (newStatus == null)
        {
            return Request;
        }

        // Create an instance of the type
        object o = Activator.CreateInstance(
            newStatus, // type
            new Object[] // constructor parameters
                {
                    Request,
                    TarsUser,
                    GrantRepository,
                    TrackingRepository
                });

        // Execute status change
        return (Request) newStatus.InvokeMember(
                             "Execute", // method
                             BindingFlags.Public 
                                | BindingFlags.Instance 
                                | BindingFlags.InvokeMethod, // binding flags
                             Type.DefaultBinder, // binder
                             o, // type
                             null); // method parameters
    }
Leslie