欢迎来到传世资源网!
加载中...
正在加载,请耐心等待...
本站为收藏、学习站,如有侵权,请联系管理员删除!

C#反射调用

介绍 评论 失效链接反馈

using System;using System.Collections.Generic;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class PrivateField { public delegate bool ReturnBoolHandler(string info); public delegate void TestHandler(string msg); public event ReturnBoolHandler ReturnBoolEvent; public event TestHandler TestEvent; } class Program { public static void s_TestEvent(string msg) { Console.WriteLine(msg); } static void Main(string[] args) { Assembly ass = Assembly.Load("ConsoleApplication1"); object structInstance = ass.CreateInstance("ConsoleApplication1.PrivateField"); Type structType = structInstance.GetType(); EventInfo eventInfo = structType.GetEvent("TestEvent", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static); Type tDelegate = eventInfo.EventHandlerType; MethodInfo miHandler = typeof(Program).GetMethod("s_TestEvent", BindingFlags.Public | BindingFlags.Static); Delegate d = Delegate.CreateDelegate(tDelegate, miHandler); MethodInfo miAddHandler = eventInfo.GetAddMethod(); object[] addHandlerArgs = { d }; miAddHandler.Invoke(structInstance, addHandlerArgs); FieldInfo _Field = structType.GetField("TestEvent", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static); if (_Field != null) { object _FieldValue = _Field.GetValue(structInstance); if (_FieldValue != null && _FieldValue is Delegate) { Delegate _ObjectDelegate = _FieldValue as Delegate; _ObjectDelegate.DynamicInvoke(new object[] { "Sandy" }); } } } }}

下载声明:

本站资源均有第三方用户自行上传分享推荐,非本站自制,仅供玩家做交流学习之用!切勿用于商业用途!游戏作品版权归原作者享有,如有版权问题,请附带版权证明至邮件,本平台将应您的要求删除。
相关推荐:

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复