如何在运行时获取静态类的方法名称?

时间:2013-02-23 06:38:00

标签: c# .net vb.net

如何在Math等静态类中获取所有方法名称?

输出应类似于以下内容:

Sin
Cos
Round
...

2 个答案:

答案 0 :(得分:4)

试试这个:

    MethodInfo[] methodInfos = typeof(Math).GetMethods(BindingFlags.Public | BindingFlags.Static);
    foreach (MethodInfo methodInfo in methodInfos)
    {
        Console.WriteLine(methodInfo.Name);
    }

如果您还需要知道所有参数,请尝试类似

    private static void Main()
    {
        MethodInfo[] methodInfos = typeof(Math).GetMethods(BindingFlags.Public | BindingFlags.Static);
        foreach (MethodInfo methodInfo in methodInfos)
        {
            Console.WriteLine(String.Format("{0} with following parameters", methodInfo.Name));
            ParameterInfo[] parameters = methodInfo.GetParameters();
            foreach (ParameterInfo parameter in parameters)
            {
                Console.WriteLine("Name : {0}, Type : {1}", parameter.Name, parameter.ParameterType.FullName);
            }

            Console.WriteLine("--------------");
        }
    }

输出:

Acos with following parameters
Name : d, Type : System.Double

--------------
Asin with following parameters
Name : d, Type : System.Double

--------------
Atan with following parameters
Name : d, Type : System.Double

--------------
Atan2 with following parameters
Name : y, Type : System.Double
Name : x, Type : System.Double

--------------
Ceiling with following parameters
Name : d, Type : System.Decimal

--------------
Ceiling with following parameters
Name : a, Type : System.Double

--------------
Cos with following parameters
Name : d, Type : System.Double

--------------
Cosh with following parameters
Name : value, Type : System.Double

--------------
Floor with following parameters
Name : d, Type : System.Decimal

--------------
Floor with following parameters
Name : d, Type : System.Double

--------------
Sin with following parameters
Name : a, Type : System.Double

--------------
Tan with following parameters
Name : a, Type : System.Double

--------------
Sinh with following parameters
Name : value, Type : System.Double

--------------
Tanh with following parameters
Name : value, Type : System.Double

--------------
Round with following parameters
Name : a, Type : System.Double

--------------
Round with following parameters
Name : value, Type : System.Double
Name : digits, Type : System.Int32

--------------
Round with following parameters
Name : value, Type : System.Double
Name : mode, Type : System.MidpointRounding

--------------
Round with following parameters
Name : value, Type : System.Double
Name : digits, Type : System.Int32
Name : mode, Type : System.MidpointRounding

--------------
Round with following parameters
Name : d, Type : System.Decimal

--------------
Round with following parameters
Name : d, Type : System.Decimal
Name : decimals, Type : System.Int32

--------------
Round with following parameters
Name : d, Type : System.Decimal
Name : mode, Type : System.MidpointRounding

--------------
Round with following parameters
Name : d, Type : System.Decimal
Name : decimals, Type : System.Int32
Name : mode, Type : System.MidpointRounding

--------------
Truncate with following parameters
Name : d, Type : System.Decimal

--------------
Truncate with following parameters
Name : d, Type : System.Double

--------------
Sqrt with following parameters
Name : d, Type : System.Double

--------------
Log with following parameters
Name : d, Type : System.Double

--------------
Log10 with following parameters
Name : d, Type : System.Double

--------------
Exp with following parameters
Name : d, Type : System.Double

--------------
Pow with following parameters
Name : x, Type : System.Double
Name : y, Type : System.Double

--------------
IEEERemainder with following parameters
Name : x, Type : System.Double
Name : y, Type : System.Double

--------------
Abs with following parameters
Name : value, Type : System.SByte

--------------
Abs with following parameters
Name : value, Type : System.Int16

--------------
Abs with following parameters
Name : value, Type : System.Int32

--------------
Abs with following parameters
Name : value, Type : System.Int64

--------------
Abs with following parameters
Name : value, Type : System.Single

--------------
Abs with following parameters
Name : value, Type : System.Double

--------------
Abs with following parameters
Name : value, Type : System.Decimal

--------------
Max with following parameters
Name : val1, Type : System.SByte
Name : val2, Type : System.SByte

--------------
Max with following parameters
Name : val1, Type : System.Byte
Name : val2, Type : System.Byte

--------------
Max with following parameters
Name : val1, Type : System.Int16
Name : val2, Type : System.Int16

--------------
Max with following parameters
Name : val1, Type : System.UInt16
Name : val2, Type : System.UInt16

--------------
Max with following parameters
Name : val1, Type : System.Int32
Name : val2, Type : System.Int32

--------------
Max with following parameters
Name : val1, Type : System.UInt32
Name : val2, Type : System.UInt32

--------------
Max with following parameters
Name : val1, Type : System.Int64
Name : val2, Type : System.Int64

--------------
Max with following parameters
Name : val1, Type : System.UInt64
Name : val2, Type : System.UInt64

--------------
Max with following parameters
Name : val1, Type : System.Single
Name : val2, Type : System.Single

--------------
Max with following parameters
Name : val1, Type : System.Double
Name : val2, Type : System.Double

--------------
Max with following parameters
Name : val1, Type : System.Decimal
Name : val2, Type : System.Decimal

--------------
Min with following parameters
Name : val1, Type : System.SByte
Name : val2, Type : System.SByte

--------------
Min with following parameters
Name : val1, Type : System.Byte
Name : val2, Type : System.Byte

--------------
Min with following parameters
Name : val1, Type : System.Int16
Name : val2, Type : System.Int16

--------------
Min with following parameters
Name : val1, Type : System.UInt16
Name : val2, Type : System.UInt16

--------------
Min with following parameters
Name : val1, Type : System.Int32
Name : val2, Type : System.Int32

--------------
Min with following parameters
Name : val1, Type : System.UInt32
Name : val2, Type : System.UInt32

--------------
Min with following parameters
Name : val1, Type : System.Int64
Name : val2, Type : System.Int64

--------------
Min with following parameters
Name : val1, Type : System.UInt64
Name : val2, Type : System.UInt64

--------------
Min with following parameters
Name : val1, Type : System.Single
Name : val2, Type : System.Single

--------------
Min with following parameters
Name : val1, Type : System.Double
Name : val2, Type : System.Double

--------------
Min with following parameters
Name : val1, Type : System.Decimal
Name : val2, Type : System.Decimal

--------------
Log with following parameters
Name : a, Type : System.Double
Name : newBase, Type : System.Double

--------------
Sign with following parameters
Name : value, Type : System.SByte

--------------
Sign with following parameters
Name : value, Type : System.Int16

--------------
Sign with following parameters
Name : value, Type : System.Int32

--------------
Sign with following parameters
Name : value, Type : System.Int64

--------------
Sign with following parameters
Name : value, Type : System.Single

--------------
Sign with following parameters
Name : value, Type : System.Double

--------------
Sign with following parameters
Name : value, Type : System.Decimal

--------------
BigMul with following parameters
Name : a, Type : System.Int32
Name : b, Type : System.Int32

--------------
DivRem with following parameters
Name : a, Type : System.Int32
Name : b, Type : System.Int32
Name : result, Type : System.Int32&

--------------
DivRem with following parameters
Name : a, Type : System.Int64
Name : b, Type : System.Int64
Name : result, Type : System.Int64&

--------------

答案 1 :(得分:0)

.GetMembers

怎么样?
var list = typeof(Math).GetMembers().Select(c => c.Name).Distinct().ToList();