using System.Collections;
using System.Collections.Generic;
using UnityEngine;using System;
using System.Reflection;
public enum EventType{
LoadWeatherDone
}
public class EventCenter{
/// <summary>
/// WeatherData
/// </summary>
public static Action<DataBase> LoadWeatherDone;
}
public class EventManager : MonoBehaviour{
/// <summary>
/// 通过方法名的枚举调用方法
/// </summary>
/// <param name="eventName"></param>
/// <param name="data"></param>
public static void BroadCast(EventType eventName, DataBase data)
{
Type t = typeof(EventCenter);
var action = t.GetField(eventName.ToString(), BindingFlags.Public | BindingFlags.Static);
object actionObj = action.GetValue(null);
MethodInfo method = actionObj.GetType().GetMethod("Invoke");
method.Invoke(actionObj, new object[] { data });
}}
c#通过方法名(反射)调用事件
最新推荐文章于 2023-02-12 00:51:11 发布