`
myrev
  • 浏览: 164036 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

C#混合IronRuby编程

    博客分类:
  • .Net
阅读更多

C#编程中,业务部分由IronRuby来实现是一个不错的选择。

 

1.  IDE: SharpDevelop http://www.icsharpcode.net/opensource/sd/

2.  IronRuby: http://ironruby.codeplex.com/releases

下载 IronRuby 1.1.1 Binaries 即可

 

3. 新建C#项目,然后引用 IronRuby Binaries下bin目录的DLL:

IronRuby.dll
IronRuby.Libraries.dll
IronRuby.Libraries.Yaml.dll
Microsoft.Dynamic.dll
Microsoft.Scripting.dll
Microsoft.Scripting.Metadata.dll

 

另外需要引用库 Microsoft.CSharp

 

4. 简单例子

在项目根目录下创建一个service 目录放Ruby文件,当然目录你可以自己取名,并且修改相应的地方。

service /apple.rb

class Apple

  def say
  	"Hello MBP!"
  end

end
 

C#

using System;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
using IronRuby;

namespace SharpDLR
{
	class Program
	{
		public static void Main(string[] args)
		{
			var engine = Ruby.CreateEngine();
			engine.ExecuteFile("service/apple.rb");
			dynamic ruby = engine.Runtime.Globals;

			dynamic apple = ruby.Apple.@new();
			Console.WriteLine("Ruby :"+apple.say());
			
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
 

5. 由于编译项目时不会自动复制Ruby文件到bin/Debug目录,所以我们要写一个编译事件。

项目配置:在编译事件(Build Events)的Pre-build event 或者 Post-build event 中加入以下命令

mkdir "$(ProjectDir)$(OutDir)service /"
copy "$(ProjectDir)service /" "$(ProjectDir)$(OutDir)service /"

 

6. 编译运行吧

 

7. 本文只是起到一个入门的作用,可以写一个Ruby初始化文件,载入整个业务所需要的Ruby类。例:

bootstrap.rb

load 'service/product.rb'
load 'service/customer.rb'
load 'service/orderitem.rb'
load 'service/order.rb'

 

相应的C#调用为

 

var engine = Ruby.CreateEngine();
engine.ExecuteFile("service/bootstrap.rb");
dynamic ruby = engine.Runtime.Globals;

dynamic customer = ruby.Customer.@new("Davy Brion", "davy@gmail.com");
dynamic product1 = ruby.Product.@new("product1", 50);
dynamic product2 = ruby.Product.@new("product2", 60);
dynamic order = ruby.Order.@new(customer, null, DateTime.Now);
 
order.add_item(ruby.OrderItem.@new(product1, 5));
order.add_item(ruby.OrderItem.@new(product2, 5));

...

 

开始享受混合编程的乐趣吧!

 

 

0
0
分享到:
评论

相关推荐

    [IronRuby] C# 4.0调用ActiveRecord

    从提供的文件信息中,我们可以得知这篇博文主要讨论的是如何使用C# 4.0调用IronRuby中的ActiveRecord功能。不过由于博文链接和部分详细内容无法提供,知识点将基于文件信息部分和公共知识构建。 知识点一:IronRuby...

    基于Python的混合语言编程及其实现.zip

    此外,Python还可以与其他语言如Java(Jython)、Ruby(IronRuby)等进行混合编程,这通常涉及到JVM或.NET框架的支持。这些语言的交互通常需要特定的互操作库或工具。 在实际项目中,混合语言编程需要注意的问题...

    c#4.0编程 源代码

    C#4.0编程语言是微软.NET框架的重要组成部分,它为开发者提供了强大的工具来构建高效、可维护的软件应用。这个源代码包包含了C#4.0编程的详细实例,覆盖了每一章节的关键知识点,确保所有示例都已经过调试,能够顺利...

    精通C#5.0与.net4.5高级编程.

    《精通C#5.0与.NET4.5高级编程》是一本深度探讨C#语言及其在.NET Framework 4.5环境下应用的专业书籍。通过阅读本书,开发者可以掌握C#5.0的新特性以及如何利用.NET4.5框架进行高效、高性能的软件开发。下面将详细...

    IronRuby博客中文版_多用户博客空间源码下载.rar

    IronRuby是Ruby编程语言的一个实现,它允许开发者在.NET Framework环境下运行Ruby代码。这个标题表明我们讨论的是一个基于IronRuby的多用户博客平台的源代码,这将涵盖以下几个核心主题: 1. **IronRuby**:...

    深入理解c#英文版

    这在混合编程环境中尤为重要。 通过阅读《深入理解C#》,读者不仅可以了解这些关键知识点,还能理解C#的设计理念以及如何在实践中应用这些知识。无论是初学者还是经验丰富的开发者,都能从本书中获得宝贵的经验和...

    Professional C# 5.0 and .NET 4.5.1.pdf_c#5.0_

    此外,C# 5.0还引入了动态类型(`dynamic`),它允许在运行时确定变量的类型,增强了与动态语言如IronPython和IronRuby的互操作性。动态类型可以用于简化与COM对象交互或处理JSON等动态数据。 另一个显著的改进是...

    IronRuby开发包(Pre Alpha1)

    IronRuby 是 Ruby 编程语言在微软 .NET 平台上的一种实现。 IronRuby 与 Wilco Bauwer 的 IronRuby project 同名,2007年4月30日由微软于 MIX 上发表。并计划于2007年的 OSCON 公开推出。 2007年8月31日,John Lam...

    The C# Programming Language (Covering C# 4.0) 4th Edition

    5. **动态编程**:C# 4.0引入了dynamic关键字,允许在运行时绑定对象,提供了与IronPython和IronRuby等动态语言交互的能力。 6. **匿名类型**:在需要临时存储一组相关数据时,可以使用匿名类型,无需预先定义具体...

    C#4.0权威指南

    《C#4.0权威指南》是一本专为开发者设计的详尽教程,旨在帮助读者深入理解C#4.0编程语言的各个方面。这本指南以其清晰易懂的风格,成为了学习C#4.0的必备参考书。通过阅读本书,你将能够充分利用C#4.0的强大功能,...

    C#4.0权威指南电子书

    动态类型是C# 4.0的一个重要特性,它允许变量在运行时确定其类型,这在与IronPython或IronRuby等动态语言交互时特别有用。动态类型通过`dynamic`关键字实现,它简化了与非.NET对象(如JavaScript对象)的交互。 多...

    C# 4.0 in a nutshell

    这使得C#可以更好地与动态语言如Python和JavaScript进行交互,特别是在使用IronPython或IronRuby等项目时更为便利。 另一个重大改进是增加了多目标框架支持(Multi-targeting Framework),开发者可以选择目标.NET ...

    C#动态执行与编译

    这使得C#可以轻松地与IronPython、IronRuby等动态语言交互,或者实现动态对象和方法。 三、Expression Trees 表达式树(Expression Trees)是另一种动态编程工具,它允许开发者将代码表示为数据结构,通常用于 ...

    Visual C# 2010从入门到精通源码-John Sharp著

    8. **动态编程**:C# 4.0引入了dynamic关键字,允许在运行时动态绑定对象和调用成员,与IronPython、IronRuby等动态语言更好地集成。 9. **单元测试与调试**:Visual Studio 2010提供了强大的单元测试工具和调试器...

    Visual C# 2012入门经典 (英文版)

    2. **动态编程增强**:C# 4.0引入了动态类型,而在C# 2012中,动态类型的使用更为灵活,可以更好地与.NET Framework的动态对象交互,如IronPython和IronRuby等。 3. **自动属性初始化器**:允许开发者在声明属性时...

    c# 4.0新特性一览

    C# 4.0的动态特性得益于DLR,这是一个运行时环境,支持动态语言如IronPython和IronRuby,并为C#提供了动态操作的支持。DLR包含表达树(Expression Trees)和绑定器(Binder),用于解析和执行动态操作。 **表达树...

    Sams.IronRuby.Unleashed.Feb.2010.rar

    它包括一个公共语言运行时(CLR)和类库,可以支持多种编程语言,如C#、VB.NET等。 3. **IronRuby集成**:IronRuby是.NET Framework的一部分,它允许Ruby代码与.NET环境无缝交互。开发者可以使用.NET的类库,同时...

    CLR via C# 第四版

    8. **动态编程**:涵盖了DLR(Dynamic Language Runtime)和C# 4.0引入的dynamic关键字,以及IronPython和IronRuby等动态语言在.NET中的实现。 9. **CLR扩展性**:讨论了如何利用CLR的扩展接口,如...

    Sams.IronRuby.Unleashed.Feb.2010.pdf

    IronRuby的开发充分利用了.NET Framework的特性,如CLR(Common Language Runtime),这使得IronRuby能够与其他.NET语言如C#、VB.NET等无缝协作。开发者可以轻松地在IronRuby代码中调用.NET类库,反之亦然,从而实现...

Global site tag (gtag.js) - Google Analytics