CSharp · Console
// C# Extension Method
// Doc: https://csharp-extension.com/en/method/1002704/parameterinfo-getdeclaraction
// @nuget: Z.ExtensionMethods
using System;
using System.Reflection;
using System.Runtime.InteropServices;
public class Program
{
public static void Main()
{
MethodInfo GenericMethod = typeof(MethodModel<int>).GetMethod("GenericMethod", BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
MethodInfo OutParameterMethod = typeof(MethodModel<int>).GetMethod("OutParameterMethod", BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
MethodInfo ParamsParameterMethod = typeof(MethodModel<int>).GetMethod("ParamsParameterMethod", BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
Type t = typeof(MethodModel<int>);
MethodInfo[] minfo = t.GetMethods();
DisplayParametersInfo(GenericMethod.GetParameters());
DisplayParametersInfo(OutParameterMethod.GetParameters());
DisplayParametersInfo(ParamsParameterMethod.GetParameters());
}
private static void DisplayParametersInfo(ParameterInfo[] parameterInfo)
{
foreach (ParameterInfo p in parameterInfo)
{
//C# Extension Method: ParameterInfo - GetDeclaraction
Console.WriteLine(p.GetDeclaraction());
}
}
public class MethodModel<T> : AbstractMethodModel
{
public class Toto<T2> {}
public static int StaticMethod() { return 1; }
public override int OverrideMethod() { return 1; }
public virtual int VirtualMethod() { return 1; }
public int PublicMethod() { return 1; }
private int PrivateMethod() { return 1; }
internal int InternalMethod() { return 1; }
protected int ProtectedMethod() { return 1; }
protected internal int ProtectedInternalMethod() { return 1; }
public int OutParameterMethod(out int i)
{
i = 1;
return 1;
}
public int RefParameterMethod(ref int i) { return 1; }
public int ParamsParameterMethod(params int[] i) { return 1; }
public int OptionalParameterMethod(int i = 1) { return 1; }
public int InParameterModifierMethod([In] int i) { return 1; }
public int OutParameterModifierMethod([Out] int i)
{
i = 1;
return 1;
}
public int OptionalParameterModifierMethod([Optional] int i) { return 1; }
public T GenericTypeMethod(T i) { return i; }
public T1 GenericMethod<T1, T2>(T1 i, T2 i2) { return i; }
public override int AbstractMethod() { throw new NotImplementedException(); }
}
public abstract class AbstractMethodModel
{
public abstract int AbstractMethod();
public abstract int OverrideMethod();
}
}
public static class ExtensionMethodModel
{
public static int ExtensionParameterMethod(this int i)
{
return 1;
}
}