WEB开发网
开发学院WEB开发ASP.NET 用IronRuby创建WPF应用程序 阅读

用IronRuby创建WPF应用程序

 2010-10-09 08:15:31 来源:WEB开发网   
核心提示: namespaceMyClassLibrary{publicclassPerson{publicstringName{get;set;}publicstringIntroduce(){returnString.Format("Hi,I'm{0}",Name);}}}让

namespace MyClassLibrary 
{ 
  public class Person 
  { 
    public string Name { get; set; } 
 
    public string Introduce() 
    { 
      return String.Format("Hi, I'm {0}", Name); 
    } 
  } 
}

让我们用Ruby来扩展它,并借此培养程序员的思维习惯。

require 'MyClassLibrary.dll' 
 
class Programmer < MyClassLibrary::Person 
  ACCEPTABLE_DRINKS = [:coffee, :tea, :cola, :red_bull] 
 
  def drink(liquid) 
    if ACCEPTABLE_DRINKS.include? liquid 
      puts "Mmm... #{name} likes code juice!"   
    else 
      raise "Need caffeine!" 
    end 
  end 
end 
 
me = Programmer.new 
me.name = "Edd" 
puts me.introduce 
me.drink(:coffee)

关于代码冗长

老实说,我不介意使用繁琐的代码引用,只要它不影响程序的性能即可,就像在之前的代码显示的那样。我喜欢简洁的代码,冗长的寻址和对象描述的简化会产生某种安全感,尽管这和本句形成了鲜明的对比。然而,在使用IronRuby的时候,我已厌倦输入 System::Whatever::Something。不管使用何种语言,总有一些开发人员喜欢设定命名空间并忘掉它们。不用担心,IronRuby 也有这种人。

由于.NET命名空间在IronRuby中是模块,所以在调用include后,完全可以把.NET命名空间引入IronRuby代码,就像要引入一个Ruby组织模块一样。

class Clock 
  include System::Windows::Shapes 
  include System::Windows::Media 
  include System::Windows::Threading 
  # and so on...

这样做可以减少调用 System::Windows::Shapes::Ellipse.new,代之以Ellipse.new,或通过 System::Windows::Threading::DispatcherPriority.Render引用 DispatcherPriority.Render。

在.NET Framework中,另一个简化IronRuby代码以及处理这些冗长代码的方法就是通过给命名空间取别名来完成。

require 'System.Windows.Forms' 
 
WinForms = System::Windows::Forms 
WinForms::Form.new 
WinForms::Label.new

结论

到此为止,我希望你能更好的了解IronRuby与.NET间的互操作,以及如何利用.NET Framework的动态属性和Ruby的优雅语法。

Ruby的风格和用法让数据处理变成一种乐趣,当然,在IronRuby也一样,它结合了 WPF生成图像的功能。我希望大家能具体看到使用这两种技术进行数据可视化的可能性。使用IronRuby来创建数据和信息图的视觉描述是多么的振奋人心。尽管在这个项目中,我们仅展现了一些简单的信息——时间——但潜在的可能性是巨大的。

上一页  1 2 3 4 5 

Tags:IronRuby 创建 WPF

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接