首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

IL

2012-03-31 
IL高手请进WPF或Silverlight中对于动态生成的类(类中含有事件),能否在实例化后调用事件?我的动态类中实现

IL高手请进
WPF或Silverlight中对于动态生成的类(类中含有事件),能否在实例化后调用事件?

我的动态类中实现了一个 System.ComponentModel.PropertyChangedEventHandler 类型的 PropertyChanged 事件,并生成了add_PropertyChanged 和 remove_PropertyChanged 方法,也指定了一个用于触发事件的 RaisePropertyChanged(string propertyName)。

在 WPF 中测试,故意将 RaisePropertyChanged(string propertyName) 声明为 public ,并将动态程序集输出到硬盘后重新引用,然后编写测试程序:

C# code
        LB lbCall;  // LB 为动态类的名称,定义了3个 int 型的属性 A、B、Result。 为便于测试,lbCall定义为全局变量        private void btnCall_Click(object sender, RoutedEventArgs e)        {            lbCall = new LB();            lbCall.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(lb_PropertyChanged);            lbCall.A = 100;            lbCall.B = 200;            this.DataContext = lbCall;        }        void lb_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)        {            this.textBox1.Text = e.PropertyName;        }        private void btnCallCalc_Click(object sender, RoutedEventArgs e)        {            lbCall.Result = (lbCall.A + 2) * (lbCall.B + 1);            lbCall.RaisePropertyChanged("Result");    // 在这一步时便会出错 System.InvalidProgramException:Common Language Runtime detected an invalid program        }



稍后发上动态类的代码,请教 IL 高手。



[解决办法]
探讨
已解决,有意看源码者请至http://blog.csdn.net/websco/archive/2010/03/10/5363572.aspx,共同学习。

热点排行