簡體   English   中英

使用System.Reflection

[英]using System.Reflection

讓我們考慮一下我有一個名為AAA的應用程序。 現在我正在加載一個名為BBB的程序集.BBB的程序集具有事件和委托的聲明。 BBB中事件的處理程序在AAA中可用。 在加載程序集BBB時,我需要在AAA中添加事件的處理程序。 每當BBB中發生該事件時,AAA shoud中的處理程序方法都會自動執行。 如何做到這一點。

我在AAA中像dis一樣編碼

Assembly tstComponent = Assembly.LoadFile(BBB);
            Type Global = tstComponent.GetType(ClassInBBB, false, true);
if (Global != null)
            {

                EventInfo l_objevent = Global.GetEvent("OnGetdelInBBB");
                Type l_objEveType = l_objevent.EventHandlerType;
                Type Dis = Assembly.GetExecutingAssembly().GetType("AAA", false, true);
                MethodInfo l_method = Dis.GetMethod("HandlerinAAA");
                Delegate d = Delegate.CreateDelegate(l_objEveType, l_method);//Getting argument bind exception in this line
                MethodInfo addHandler = l_objevent.GetAddMethod();
                Object[] addHandlerArgs = { d };
                addHandler.Invoke(Dis, addHandlerArgs);

             }   

請幫我。 提前致謝

請參閱如何:使用反射連接代表

在您的代碼示例中,您的狀態為一個異常-可能由於多種原因而發生,但是我的直覺是這是因為方法簽名不正確。 您可能還想嘗試將對象作為第二個參數的其他重載

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM