代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Test1
{
internal class Program
{
static void Main(string[] args)
{
Test test = new Test();
//根据参数获取重载方法的具体方法
//MethodInfo methodInfo = test.GetType().GetMethod("Test1", new Type[] { typeof(int) });
//获取重载方法,无参数的哪个方法
//MethodInfo methodInfo = test.GetType().GetMethod("Test1", Type.EmptyTypes);
//遍历所有的参数(有重载方法会报错)
//MethodInfo method = test.GetType().GetMethod("Test1");
//ParameterInfo[] parameters = method.GetParameters();
//Console.WriteLine("Parameter count: " + parameters.Length);
//foreach (ParameterInfo parameter in parameters)
//{
// Console.WriteLine("Parameter name: " + parameter.Name);
// Console.WriteLine("Parameter type: " + parameter.ParameterType);
//}
MethodInfo[] methods = test.GetType().GetMethods();
foreach (MethodInfo method in methods)
{
if (method.Name == "Test1")
{
Console.WriteLine("方法名: " + method.Name);
ParameterInfo[] parameters = method.GetParameters();
Console.WriteLine("参数个数: " + parameters.Length);
foreach (ParameterInfo parameter in parameters)
{
Console.WriteLine("参数类型:{0},参数名:{1}", parameter.ParameterType, parameter.Name);
}
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
public class Test
{
public static void Test1()
{
}
public static void Test1(int x)
{
}
public static void Test1(int x, int y)
{
}
}
运行:
封装一下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
internal class Tool
{
/// <summary>
/// 打印一个 List 所有类的字段
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
public static void PrintClass<T>(List<T> list)
{
foreach (var item in list)
{
Type type = item.GetType();
PropertyInfo[] properties = type.GetProperties();
List<string> allProperty = new List<string>();
foreach (var property in properties)
{
string value = $"{property.Name}: {property.GetValue(item)}";
allProperty.Add(value);
}
string content = string.Join(",", allProperty);
Console.WriteLine(content);
}
}
/// <summary>
/// 打印一个类所有的字段
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="item"></param>
public static void PrintClass<T>(T item)
{
Type type = item.GetType();
PropertyInfo[] properties = type.GetProperties();
List<string> allProperty = new List<string>();
foreach (var property in properties)
{
string value = $"{property.Name}: {property.GetValue(item)}";
allProperty.Add(value);
}
string content = string.Join(",", allProperty);
Console.WriteLine(content);
}
}
end