【问题标题】:How do you raise a .Net event from an IronRuby class?如何从 IronRuby 类中引发 .Net 事件?
【发布时间】:2010-04-17 15:24:59
【问题描述】:

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

这是我的班级目前的样子:

class TestClass
    include System::ComponentModel::INotifyPropertyChanged

    def add_PropertyChanged(handler)
    end

    def remove_PropertyChanged(handler)
    end
end

【问题讨论】:

    标签: ironruby


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多