IL

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,共同学习。