[英]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.