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));
...
开始享受混合编程的乐趣吧!
分享到:
相关推荐
从提供的文件信息中,我们可以得知这篇博文主要讨论的是如何使用C# 4.0调用IronRuby中的ActiveRecord功能。不过由于博文链接和部分详细内容无法提供,知识点将基于文件信息部分和公共知识构建。 知识点一:IronRuby...
此外,Python还可以与其他语言如Java(Jython)、Ruby(IronRuby)等进行混合编程,这通常涉及到JVM或.NET框架的支持。这些语言的交互通常需要特定的互操作库或工具。 在实际项目中,混合语言编程需要注意的问题...
C#4.0编程语言是微软.NET框架的重要组成部分,它为开发者提供了强大的工具来构建高效、可维护的软件应用。这个源代码包包含了C#4.0编程的详细实例,覆盖了每一章节的关键知识点,确保所有示例都已经过调试,能够顺利...
《精通C#5.0与.NET4.5高级编程》是一本深度探讨C#语言及其在.NET Framework 4.5环境下应用的专业书籍。通过阅读本书,开发者可以掌握C#5.0的新特性以及如何利用.NET4.5框架进行高效、高性能的软件开发。下面将详细...
IronRuby是Ruby编程语言的一个实现,它允许开发者在.NET Framework环境下运行Ruby代码。这个标题表明我们讨论的是一个基于IronRuby的多用户博客平台的源代码,这将涵盖以下几个核心主题: 1. **IronRuby**:...
这在混合编程环境中尤为重要。 通过阅读《深入理解C#》,读者不仅可以了解这些关键知识点,还能理解C#的设计理念以及如何在实践中应用这些知识。无论是初学者还是经验丰富的开发者,都能从本书中获得宝贵的经验和...
此外,C# 5.0还引入了动态类型(`dynamic`),它允许在运行时确定变量的类型,增强了与动态语言如IronPython和IronRuby的互操作性。动态类型可以用于简化与COM对象交互或处理JSON等动态数据。 另一个显著的改进是...
IronRuby 是 Ruby 编程语言在微软 .NET 平台上的一种实现。 IronRuby 与 Wilco Bauwer 的 IronRuby project 同名,2007年4月30日由微软于 MIX 上发表。并计划于2007年的 OSCON 公开推出。 2007年8月31日,John Lam...
5. **动态编程**:C# 4.0引入了dynamic关键字,允许在运行时绑定对象,提供了与IronPython和IronRuby等动态语言交互的能力。 6. **匿名类型**:在需要临时存储一组相关数据时,可以使用匿名类型,无需预先定义具体...
《C#4.0权威指南》是一本专为开发者设计的详尽教程,旨在帮助读者深入理解C#4.0编程语言的各个方面。这本指南以其清晰易懂的风格,成为了学习C#4.0的必备参考书。通过阅读本书,你将能够充分利用C#4.0的强大功能,...
动态类型是C# 4.0的一个重要特性,它允许变量在运行时确定其类型,这在与IronPython或IronRuby等动态语言交互时特别有用。动态类型通过`dynamic`关键字实现,它简化了与非.NET对象(如JavaScript对象)的交互。 多...
这使得C#可以更好地与动态语言如Python和JavaScript进行交互,特别是在使用IronPython或IronRuby等项目时更为便利。 另一个重大改进是增加了多目标框架支持(Multi-targeting Framework),开发者可以选择目标.NET ...
这使得C#可以轻松地与IronPython、IronRuby等动态语言交互,或者实现动态对象和方法。 三、Expression Trees 表达式树(Expression Trees)是另一种动态编程工具,它允许开发者将代码表示为数据结构,通常用于 ...
8. **动态编程**:C# 4.0引入了dynamic关键字,允许在运行时动态绑定对象和调用成员,与IronPython、IronRuby等动态语言更好地集成。 9. **单元测试与调试**:Visual Studio 2010提供了强大的单元测试工具和调试器...
2. **动态编程增强**:C# 4.0引入了动态类型,而在C# 2012中,动态类型的使用更为灵活,可以更好地与.NET Framework的动态对象交互,如IronPython和IronRuby等。 3. **自动属性初始化器**:允许开发者在声明属性时...
C# 4.0的动态特性得益于DLR,这是一个运行时环境,支持动态语言如IronPython和IronRuby,并为C#提供了动态操作的支持。DLR包含表达树(Expression Trees)和绑定器(Binder),用于解析和执行动态操作。 **表达树...
它包括一个公共语言运行时(CLR)和类库,可以支持多种编程语言,如C#、VB.NET等。 3. **IronRuby集成**:IronRuby是.NET Framework的一部分,它允许Ruby代码与.NET环境无缝交互。开发者可以使用.NET的类库,同时...
8. **动态编程**:涵盖了DLR(Dynamic Language Runtime)和C# 4.0引入的dynamic关键字,以及IronPython和IronRuby等动态语言在.NET中的实现。 9. **CLR扩展性**:讨论了如何利用CLR的扩展接口,如...
IronRuby的开发充分利用了.NET Framework的特性,如CLR(Common Language Runtime),这使得IronRuby能够与其他.NET语言如C#、VB.NET等无缝协作。开发者可以轻松地在IronRuby代码中调用.NET类库,反之亦然,从而实现...