我已经学习了一个关于启动和运行ironruby的教程,效果很好。然而,当我尝试更深入地研究时,比如使用按钮点击事件,我会得到这个错误;
Could not load type 'System.Reflection.Emit.ModuleBuilder' from assembly 'mscorlib, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC'.
和我的主页.rb
include System
include System::Windows
include System::Windows::Controls
# Set the titles
Phone.find_name("ApplicationTitle").text = "this is the application title"
Phone.find_name("PageTitle").text = "and page title here"
# Create a new button and add to page
button = Button.new
button.content = "Click Me"
Phone.find_name("ContentPanel").children.add(button)
button.click do |s,e| # breaks here
MessageBox.show("Button Click Works!")
end
目前是否有可能使用ironruby构建专业应用程序?
在Windows Phone 7上使用动态语言的问题是它省略了System.Reflection.Emit
实现。然而,IronRuby能够通过其解释器运行大多数代码,而不是发出IL,这使得它可以在WindowsPhone7中运行。但是,像CLR类型的子类化和实现接口这样的事情需要发出IL,所以这些.NET互操作功能在Windows Phone 7上无法运行。
对于您的特定示例,不要使用块,而是尝试使用一种方法:
def on_button_click(s, e)
MessageBox.show("Button Click Works!")
end
button.click.add(method(:on_button_click))
但是,如果这对您不起作用,请提交一个问题。
可能,但我个人认为,完成专业工作的唯一方法是使用本机操作系统。这样,您就可以最大限度地发挥的功能