<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 利用反射獲得委托和事件以及創建委托實例和添加事件處理程序 最近一些都在看關于反射的內容,然后在網上大多數都是通過反射獲得類型中方法,屬性、字段這樣的文章, 但是對于如何獲得委托類型怎么去實現的卻沒有, 所以寫下這邊篇文章來讓自己以后很好的復習以及想了解的朋友做參考。 一、 利用反射獲得委托類型并創建委托實例 ``` using System; using System.Reflection; namespace ConsoleApplication1 { public class Test { public delegate void delegateTest(string s); public void method1(string s) { Console.WriteLine("Create Delegate Instance: " + s); } } class Program { static void Main(string[] args) { Test test = new Test(); Type t = Type.GetType("ConsoleApplication1.Test"); // 因為委托類型編譯后是作為類的嵌套類型的,所以這里通過GetNestedType(String s)的方法來獲得委托類型。 Type nestType = t.GetNestedType("delegateTest"); MethodInfo method =test.GetType().GetMethod("method1", BindingFlags.Public | BindingFlags.Static|BindingFlags.Instance); if (method != null) { // 創建委托實例 Delegate method1 = Delegate.CreateDelegate(nestType, test, method); //動態調用委托實例 method1.DynamicInvoke("Hello"); } Console.Read(); } } } ``` 二、 利用反射獲得事件類型和綁定事件處理程序 ``` using System; using System.Reflection; namespace ConsoleApplication2 { public class Test { public event EventHandler TestEvent; public void Triggle() { if (TestEvent != null) { TestEvent(this, null); } } } class Program { static void Main(string[] args) { Test testT=new Test(); EventInfo eventinfo = typeof(Test).GetEvent("TestEvent"); if (eventinfo != null) { // 為事件動態綁定處理程序 eventinfo.AddEventHandler(testT, new EventHandler(triggleEvent)); testT.Triggle(); } Console.Read(); } public static void triggleEvent(object sender, EventArgs e) { Console.WriteLine("Event has been Triggled"); } } } ``` 希望這些使大家對放射有個更好的理解。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看