Does reflection expose if the last argument for a method was marked with 'params'?

c#, reflection

Solution

Use ParamArrayAttribute attribute

class Program
{
    public void MethodWithParams(object param1, params int[] param2) 
    {            
    }

    static void Main(string[] args)
    {
        var method = typeof(Program).GetMethod("MethodWithParams");
        var @params = method.GetParameters();
        foreach (var param in @params) 
        {
            Console.WriteLine(param.IsDefined(typeof(ParamArrayAttribute), false));
        }
    }
}

Problem

Using reflection on a method definition I would like to find out if the original method was defined with 'params' on the last parameter. So can I discover if the original definition was this... ``` public void MyMethod(int x, params object[] args); ``` ...and not this... ``` public void MyMethod(int x, object[] args); ``` My code has a list of arguments and is using reflection to call an arbitrary method. If it is marked with 'params' then I want to package up the extra parameters into an object[] and call the method. If the argument is not marked with 'params' then I would indicate an error instead. So I want to provide the same semantics as C#. But I cannot find any docs that indicate how to discover this using reflection.

Original source