Как вызвать событие .Net из класса IronRuby?

Я пытаюсь понять, как реализовать событие в рубиновом классе. В частности, я пытаюсь реализовать в своем классе интерфейс (INotifyPropertyChanged), который включает событие (PropertyChanged). Я могу создать свои методы add_PropertyChanged и remove_PropertyChanged... но что потом?

Вот как мой класс выглядит до сих пор:

class TestClass
    include System::ComponentModel::INotifyPropertyChanged

    def add_PropertyChanged(handler)
    end

    def remove_PropertyChanged(handler)
    end
end

person Brian Genisio    schedule 17.04.2010    source источник


Ответы (1)


Хорошо, я понял это. Вот как это сделать:

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
person Brian Genisio    schedule 17.04.2010