你如何从IronRuby类中引发.Net事件?

时间:2010-04-17 15:25:00

标签: ironruby

我正在试图弄清楚如何在ruby类中实现一个事件。具体来说,我试图让我的类实现一个包含事件(PropertyChanged)的接口(INotifyPropertyChanged)。我可以创建我的add_PropertyChanged和remove_PropertyChanged方法......但那又是什么?

这是我班级到目前为止的样子:

class TestClass
    include System::ComponentModel::INotifyPropertyChanged

    def add_PropertyChanged(handler)
    end

    def remove_PropertyChanged(handler)
    end
end

1 个答案:

答案 0 :(得分:2)

好的,我明白了。这是你如何做到的:

class TestClass
    include System::ComponentModel::INotifyPropertyChanged

    def initialize
        @change_handlers = []
    end

    def add_PropertyChanged(handler)
        @change_handlers << handler
    end

    def remove_PropertyChanged(handler)
        @change_handlers.delete(handler)
    end

    def NotifyPropertyChanged(name)
        @change_handlers.each { |h| h.invoke(self, System::ComponentModel::PropertyChangedEventArgs.new(name)) }
    end
end