<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      掛載非引用Assembly中的事件

      有兩個 Assembly A,B 在A中聲明了一個事件(某個類中的某個事件), B沒有引用這Assembly ,但是想掛A中的這個事件。當A中的某個邏輯fire這個Event時,B掛事件的地方要(B的handler)要做些事情。

      FireFarEvent 是 Assembly A, MainForm 類公開一個 SomeEvent 事件, FireEvent button 會 Fire 這個 Event.

      AttachFarEvent 是 Assembly B, AttachFarEventForm 中 btnAttachEvent_Click 會 hook FireFarEvent 中的 SomeEvent.

       

      AttachFarEvent代碼如下:

       

              private void btnAttachEvent_Click(object sender, EventArgs e)
              {
                  if(assembly == null || fireEventForm == null)
                  {
                      MessageBox.Show("Please click the first button to load the fire event form.");
                      return;
                  }
                  Type fireFarEventFormType = fireEventForm.GetType();
                  farEventEventInfo = fireFarEventFormType.GetEvent("SomeEvent");
      
                  EventHandler tempHandler = new EventHandler(this.farEventHandler); // for dynamic method.
                  MethodInfo tempHandlerMethodInfo = tempHandler.Method;
      
      
                  DynamicMethod dynamicMethod = new DynamicMethod(
                      "BridgeMethodForAttachEvent", typeof(void),
                      new Type[] { typeof(object), assembly.GetType("FireFarEvent.FarEventArgs") },
                      this.GetType());
      
                  ILGenerator il = dynamicMethod.GetILGenerator();
      
                  il.Emit(OpCodes.Nop);
                  il.Emit(OpCodes.Ldarg_0);
                  il.Emit(OpCodes.Ldarg_2);
                  il.Emit(OpCodes.Ldarg_1);
                  il.Emit(OpCodes.Call, tempHandlerMethodInfo);
                  il.Emit(OpCodes.Nop);
                  il.Emit(OpCodes.Ret);
      
                  dynamicMethod.DefineParameter(1, ParameterAttributes.In, "object");
                  dynamicMethod.DefineParameter(2, ParameterAttributes.In, "e");
      
                  farEventDelegate = dynamicMethod.CreateDelegate(farEventEventInfo.EventHandlerType);
                  farEventEventInfo.AddEventHandler(fireEventForm, farEventDelegate);
              }
      

       

       

      DetachFarEvent代碼如下:

       

       

              private void btnDetachEvent_Click(object sender, EventArgs e)
              {
                  if (assembly == null || fireEventForm == null || farEventEventInfo == null)
                  {
                      MessageBox.Show("Please click the first button to load the fire event form.");
                      return;
                  }
                  farEventEventInfo.RemoveEventHandler(fireEventForm, farEventDelegate);
              }
      

       

       

       

       

      Demo下載:AttachFarEvent.rar

      posted @ 2010-07-29 09:07  葡萄城技術團隊  閱讀(3202)  評論(12)    收藏  舉報
      主站蜘蛛池模板: 高潮喷水抽搐无码免费| 国产成人综合网在线观看| 少妇人妻互换不带套| 真实国产老熟女无套内射| av在线播放观看国产| 撕开奶罩揉吮奶头高潮av| 男女啪啪高潮激烈免费版| 国产一级老熟女自拍视频| 日韩有码中文字幕一区二区 | 九九综合va免费看| 一卡2卡三卡4卡免费网站| 国产一区二区三区免费观看| 国产精品成人久久电影| 日本丰满白嫩大屁股ass| 区一区二区三区中文字幕| 天堂mv在线mv免费mv香蕉| 亚洲av永久无码精品水牛影视| 九九热免费精品视频在线| 亚洲精品漫画一二三区| 成人免费AA片在线观看| 色吊丝免费av一区二区| 日99久9在线 | 免费| 国产亚洲精品第一综合| 国产亚洲精久久久久久无码77777| 老熟妇国产一区二区三区| 高清有码国产一区二区| 99在线精品国自产拍中文字幕| 欧美亚洲h在线一区二区| 免费夜色污私人影院在线观看| 亚洲色一区二区三区四区| 国产精品人妻一码二码尿失禁| 亚洲精品一区二区三区片| 国产成人亚洲综合图区| 久久精品国产亚洲AV麻豆长发| 国产午夜精品亚洲精品国产| 国产播放91色在线观看| 色综合天天色综合久久网| 国产精品中文字幕视频| 大地资源免费视频观看| 国产午夜视频在线观看| 国产精品久久久久久影视|