如何在windows ce监听反射的事件,我是用的C#,基于.net compact framework 2.0。
有一个app.dll里有class1,class1定义了一个事件event1,我想在我的程序中动态加载该dll,并且绑定一个方法来处理event1。
如下代码
ass = Assembly.Load(sDllName);structInstance = ass.CreateInstance(sAppName);Type structType = structInstance.GetType();EventInfo eventInfo = structType.GetEvent("OnScanerComplete", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);Type tDelegate = eventInfo.EventHandlerType;MethodInfo miHandler = typeof(ScanForm).GetMethod("ScanerComplete");Delegate d = Delegate.CreateDelegate(tDelegate, this, miHandler);MethodInfo miAddHandler = eventInfo.GetAddMethod();object[] addHandlerArgs = { d };miAddHandler.Invoke(structInstance, addHandlerArgs);该代码在 .Net CF 3.5框架下可以实现,但是在 .Net CF 2.0框架下,找不到Delegate.CreateDelegate方法。
请问各位有没有其它办法在2.0下实现。
有一个app.dll里有class1,class1定义了一个事件event1,我想在我的程序中动态加载该dll,并且绑定一个方法来处理event1。
如下代码
ass = Assembly.Load(sDllName);structInstance = ass.CreateInstance(sAppName);Type structType = structInstance.GetType();EventInfo eventInfo = structType.GetEvent("OnScanerComplete", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);Type tDelegate = eventInfo.EventHandlerType;MethodInfo miHandler = typeof(ScanForm).GetMethod("ScanerComplete");Delegate d = Delegate.CreateDelegate(tDelegate, this, miHandler);MethodInfo miAddHandler = eventInfo.GetAddMethod();object[] addHandlerArgs = { d };miAddHandler.Invoke(structInstance, addHandlerArgs);该代码在 .Net CF 3.5框架下可以实现,但是在 .Net CF 2.0框架下,找不到Delegate.CreateDelegate方法。
请问各位有没有其它办法在2.0下实现。
{
public MethodInfo method; public object[] parameters;
public void CallMethod()
{
method.Incoke(......);
}
}
然后你的代码就可以不去直接用反射的method来创建Delegate实例,而使用这样来创建DelegateMyDelegateProxy p= new MyDelegateProxy();
p.method= miHandler;
p.parameters=.....;
ThreadStar del= new ThreadStar(p.CallMethod);
这样你就可以用del来代理执行miHandler了!