2010-04-17 10 views
0

J'essaie de comprendre comment implémenter un événement dans une classe ruby. Plus précisément, j'essaie de faire en sorte que ma classe implémente une interface (INotifyPropertyChanged) qui inclut un événement (PropertyChanged). Je peux créer mes méthodes add_PropertyChanged et remove_PropertyChanged ... mais alors quoi?Comment soulevez-vous un événement .Net d'une classe IronRuby?

C'est ce que ma classe ressemble à ce jour:

class TestClass 
    include System::ComponentModel::INotifyPropertyChanged 

    def add_PropertyChanged(handler) 
    end 

    def remove_PropertyChanged(handler) 
    end 
end 

Répondre

2

OK, je compris. Voici comment vous le faites:

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