c# 反射Reflect各种类型方法调用 测试
程序员文章站
2022-03-23 16:55:56
...
欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群
#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扫描二维码加群
下一篇: php简单smarty入门程序实例