Как вы поднимаете событие .Net из класса IronRuby? - PullRequest
0 голосов
/ 17 апреля 2010

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

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

class TestClass
    include System::ComponentModel::INotifyPropertyChanged

    def add_PropertyChanged(handler)
    end

    def remove_PropertyChanged(handler)
    end
end

1 Ответ

2 голосов
/ 17 апреля 2010

ОК, я понял это. Вот как вы это делаете:

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
...