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

发布于 2024-08-29 22:53:44 字数 384 浏览 11 评论 0原文

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

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

class TestClass
    include System::ComponentModel::INotifyPropertyChanged

    def add_PropertyChanged(handler)
    end

    def remove_PropertyChanged(handler)
    end
end

I'm trying to figure out how to implement an event in a ruby class. Specifically, I am trying to make my class implement an interface (INotifyPropertyChanged) that includes an event (PropertyChanged). I can create my add_PropertyChanged and remove_PropertyChanged methods... but then what?

This is what my class looks like so far:

class TestClass
    include System::ComponentModel::INotifyPropertyChanged

    def add_PropertyChanged(handler)
    end

    def remove_PropertyChanged(handler)
    end
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄与心 2024-09-05 22:53:44

好吧,我明白了。操作方法如下:

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

OK, I figured it out. Here is how you do it:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文