IL高手请进
WPF或Silverlight中对于动态生成的类(类中含有事件),能否在实例化后调用事件?
我的动态类中实现了一个 System.ComponentModel.PropertyChangedEventHandler 类型的 PropertyChanged 事件,并生成了add_PropertyChanged 和 remove_PropertyChanged 方法,也指定了一个用于触发事件的 RaisePropertyChanged(string propertyName)。
在 WPF 中测试,故意将 RaisePropertyChanged(string propertyName) 声明为 public ,并将动态程序集输出到硬盘后重新引用,然后编写测试程序:
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 }