C#高级:使用Invoke关键字通过 Type 类型调用指定的方法

demo如下: 

using System.Reflection;
using System;

public class Program
{
    public class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }

    public class Student
    {
        public string Name { get; set; }
    }

    public class Example
    {
        // 泛型方法
        public string GenericMethod<T>(string name) where T : class, new()
        {
            return $"调用了泛型方法,入参是:{typeof(T).Name}类,参数{name}";
        }
    }

    public static void Main()
    {


        // 01获取类型
        var calculator = new Calculator();
        Type calcType = typeof(Calculator);

        // 02获取方法(根据字符串获取)
        MethodInfo addMethod = calcType.GetMethod("Add");

        // 03准备入参
        object[] parameters = new object[] { 5, 10 };

        // 04使用 Invoke 调用方法并获取返回值
        int result = (int)addMethod.Invoke(calculator, parameters);

        // 输出结果
        Console.WriteLine($"Result: {result}");



        // 01获取 Example 类型
        var example = new Example();
        Type exampleType = typeof(Example);

        // 02获取泛型方法 GenericMethod
        MethodInfo generalMethod = exampleType.GetMethod("GenericMethod");

        // 构建泛型方法:GenericMethod<Student>(string name)
        MethodInfo genericMethod = generalMethod.MakeGenericMethod(typeof(Student));//多个泛型入参参考:MethodInfo genericMethod = generalMethod.MakeGenericMethod(typeof(Student), typeof(Teacher));

        // 03准备参数
        object[] parameters2 = new object[] { "John Doe" };

        // 04调用泛型方法并获取返回值
        string result2 = (string)genericMethod.Invoke(example, parameters2);

        // 05输出返回值的类型
        Console.WriteLine($"Result2: {result2}");
    }
}

输出结果:

Result: 15
Result2: 调用了泛型方法,入参是:Student类,参数John Doe

总结:

上一篇:【Java语言】String类


下一篇:Linux设置Nginx开机启动