zoukankan      html  css  js  c++  java
  • 反射事件参数

    namespace ConsoleApplication
    {
        class Program
        {
            public static  void s_TestEvent(string msg)
            {
                Console.WriteLine(msg);
            }

            static void Main(string[] args)
            {
                Assembly ass = Assembly.Load("ConsoleApplication");

                object structInstance = ass.CreateInstance("ConsoleApplication.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" });
                    }
                }
            }
        }
    }        

  • 相关阅读:
    【UOJ #46】 【清华集训2014】玄学
    【BZOJ3626】 [LNOI2014]LCA
    THUSC 2017 游记
    Cqoi2017试题泛做
    全国高校程序设计大赛 评定奖学金
    全国高校程序设计大赛 素数和偶数
    全国高校程序设计大赛 八进制数中含7的总个数
    全国高校程序设计大赛 电商促销
    PTA 02-线性结构1 两个有序链表序列的合并
    PTA 02-线性结构2 一元多项式的乘法与加法运算
  • 原文地址:https://www.cnblogs.com/dlbird/p/3975024.html
Copyright © 2011-2022 走看看