在线急等,关于反射的
就是我有一堆的事件,例如:
this.editor.BindingManager.AddingNew += new Data.AddingNewEventHandler<TBORG_ADMIN>(Editor_AddingNew);
this.editor.BindingManager.AddingNew += new Data.AddingNewEventHandler<TBORG_TAXUNIT>(Editor_AddingNew);
this.editor.BindingManager.AddingNew += new Data.AddingNewEventHandler<TBORG_BASEUNIT>(Editor_AddingNew);
...(TBORG_ADMIN,TBORG_TAXUNIT...是EDM实体)
既然我全部都是Editor_AddingNew,我想用反射写一次就好了,不用写这么多的 +=。
反射代码如下:
EventInfo eventInfo = this.editor.BindingManager.GetType().GetEvent("AddingNew");
Delegate d = Delegate.CreateDelegate(eventInfo.EventHandlerType, this, "Editor_AddingNew");
eventInfo.AddEventHandler(this.editor.BindingManager, d);
如果参数类型一样的话是没错的(就是TBORG_ADMIN的,用回Data.AddingNewEventArgs<TBORG_ADMIN> e),如果用object,dynamic的话,到Delegate.CreateDelegate这步就报错了,说“无法绑定到目标方法,因为它的签名或安全透明与委托类型的签名或安全透明不兼容。”
Editor_AddingNew代码如下:
public void Editor_AddingNew(object sender, dynamic e)
{
e.NewObject.FLID = this.BindingManager.Current.FLID;
e.NewObject.FLNAME_L2 = this.BindingManager.Current.FLNAME_L2;
}
最后我问一下各位,用反射能不能实现,怎么实现?
this.editor.BindingManager.AddingNew += new Data.AddingNewEventHandler<TBORG_ADMIN>(Editor_AddingNew);
this.editor.BindingManager.AddingNew += new Data.AddingNewEventHandler<TBORG_TAXUNIT>(Editor_AddingNew);
this.editor.BindingManager.AddingNew += new Data.AddingNewEventHandler<TBORG_BASEUNIT>(Editor_AddingNew);
...(TBORG_ADMIN,TBORG_TAXUNIT...是EDM实体)
既然我全部都是Editor_AddingNew,我想用反射写一次就好了,不用写这么多的 +=。
反射代码如下:
EventInfo eventInfo = this.editor.BindingManager.GetType().GetEvent("AddingNew");
Delegate d = Delegate.CreateDelegate(eventInfo.EventHandlerType, this, "Editor_AddingNew");
eventInfo.AddEventHandler(this.editor.BindingManager, d);
如果参数类型一样的话是没错的(就是TBORG_ADMIN的,用回Data.AddingNewEventArgs<TBORG_ADMIN> e),如果用object,dynamic的话,到Delegate.CreateDelegate这步就报错了,说“无法绑定到目标方法,因为它的签名或安全透明与委托类型的签名或安全透明不兼容。”
Editor_AddingNew代码如下:
public void Editor_AddingNew(object sender, dynamic e)
{
e.NewObject.FLID = this.BindingManager.Current.FLID;
e.NewObject.FLNAME_L2 = this.BindingManager.Current.FLNAME_L2;
}
最后我问一下各位,用反射能不能实现,怎么实现?
...全文
相关推荐
购物车,缓存,反射,在线支付
在IT行业中,购物车、缓存、反射以及在线支付是电子商务系统中不可或缺的重要组成部分。下面将详细介绍这些概念及其在实际应用中的作用。
反射计数(
\
Java 反射创建get set方法及反射方法的调用
本文将详细介绍如何利用Java反射来创建get和set方法,并演示如何通过反射机制调用这些方法。#### Java反射概述Java反射机制提供了一种方式,可以在运行时获取类的信息,并创建和操作对象。
各种光栅反射谱matlab仿真
在学习过程中,如果遇到任何问题,都可以通过查阅MATLAB帮助文档或在线资源来寻求解答。
激光漫反射测距回波信号在线提取方法
"本文提出了一种基于时间相关性的激光漫反射测距回波信号快速提取方法,旨在解决实测数据中噪声多、回波信号提取困难的问题。通过分析实测数据特性,将问题转化为n点搜索问题,并通过理论验证了这种方法的正确性


