欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c# 反射Reflect各种类型方法调用 测试

程序员文章站 2022-03-23 16:55:56
...

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

c# 反射Reflect各种类型方法调用 测试


 

 c# 反射Reflect各种类型方法调用 测试

#region 模块信息
// **********************************************************************
// Copyright (C) 2019 Blazors
// Please contact me if you have any questions
// File Name:             Reflect
// Author:                romantic
// WeChat||QQ:            at853394528 || 853394528 
// **********************************************************************
#endregion
using System;
using System.Reflection;
using UnityEngine;

public class Reflect : MonoBehaviour {

	// Use this for initialization
	void Start () {
        Type type = typeof(ReflectTest);
        object reflectTest = Activator.CreateInstance(type);

        //不带参数且不返回值的方法的调用  
        MethodInfo methodInfo = type.GetMethod("MethodWithNoParaNoReturn");
        methodInfo.Invoke(reflectTest, null);


        //不带参数且有返回值的方法的调用  
        methodInfo = type.GetMethod("MethodWithNoPara");
        string tt = methodInfo.Invoke(reflectTest, null).ToString();
        Debug.LogWarning(tt);


        //带参数且有返回值的方法的调用  
        methodInfo = type.GetMethod("Method1", new Type[] { typeof(string) });
         string ss = methodInfo.Invoke(reflectTest, new object[] { "测试" }).ToString();
        Debug.LogWarning(ss);


        //带多个参数且有返回值的方法的调用  
        methodInfo = type.GetMethod("Method2", new Type[] { typeof(string), typeof(int) });
        string str =  methodInfo.Invoke(reflectTest, new object[] { "测试", 100 }).ToString();
        Debug.LogWarning(str);

        //静态方法的调用  
        methodInfo = type.GetMethod("StaticMethod");
        string strr = methodInfo.Invoke(null, null).ToString();
        Debug.LogWarning(strr);
    }
}
public class ReflectTest
{
    public void MethodWithNoParaNoReturn()
    {
        Debug.Log("调用不带参数且无返回值的方法");
    }

    public string MethodWithNoPara()
    {
        Debug.Log("调用不带参数且有返回值的方法");
        return "MethodWithNoPara";
    }

    public string Method1(string str)
    {
        Debug.Log("调用带参数且有返回值的方法");
        return "我是返回值: "+str;
    }

    public string Method2(string str, int index)
    {
        Debug.Log("调用带多参数且有返回值的方法");
        return "我是返回值: "+str + index.ToString();
    }

    public static string StaticMethod()
    {
        Debug.Log("调用静态方法");
        return "我是返回值: "+"StaticMethod";
    }
}


欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

c# 反射Reflect各种类型方法调用 测试