Tag: ironruby

从IronRuby返回CLR类型

我试图从Iron Ruby返回一个CLR对象。 我在C#中定义了以下CLR类型 public class BuildMetaData { public string Description { get; set; } } 我有以下IronRuby文件: $:.unshift(File.dirname(__FILE__) + ‘/../bin/Debug’) require ‘mscorlib’ require ‘Horn.Core.DSL.Domain’ class MetaDataFactory def return_meta_data() meta = Horn::Core::DSL::Domain::BuildMetaData.new meta.Description = “A description of sorts” meta end end 我有以下测试失败: [Fact] public void Then_a_build_metadata_object_is_returned() { var engine = Ruby.CreateEngine(); engine.ExecuteFile(“test.rb”); var code = String.Format(“{0}.new.method :{1}”, […]

IronRuby在.NET 3.5中调用C#扩展方法 – 错误 – 兼容性

我已经编写了一个名为HideColumns的DataGridView扩展方法。 public static class Extensions { public static void HideColumns(this DataGridView dataGridView, params string[] columnNames) { foreach (string str in columnNames) { if (dataGridView.Columns[str] != null) { dataGridView.Columns[str].Visible = false; } } } } 我将网格作为名为main_grid的变量传递给IronRuby脚本 当我的脚本调用main_grid.HideColumns(“FirstName”,“LastName”)时,脚本会出现错误,脚本未定义方法’HideColumns’用于System.Windows.Forms.DataGridView:System :: Windows :: Forms :: DataGridView 扩展方法似乎可以从C#中正常工作。 是什么赋予了?

如何使用C#方法使用IronRuby块

我正在使用IronRuby并试图找出如何使用C#方法的块。 这是我试图模仿的基本Ruby代码: def BlockTest () result = yield(“hello”) puts result end BlockTest { |x| x + ” world” } 我尝试用C#和IronRuby做同样的事情是: string scriptText = “csharp.BlockTest { |arg| arg + ‘world’}\n”; ScriptEngine scriptEngine = Ruby.CreateEngine(); ScriptScope scriptScope = scriptEngine.CreateScope(); scriptScope.SetVariable(“csharp”, new BlockTestClass()); scriptEngine.Execute(scriptText, scriptScope); BlockTestClass是: public class BlockTestClass { public void BlockTest(Func block) { Console.WriteLine(block(“hello “)); } […]

集成C#,F#,IronPython和IronRuby

我被告知,由C#和F#源组成的汇编文件可以互操作,因为它们被编译成.NET程序集。 Q1:这是否意味着C#可以调用F#函数就像它们是C#函数一样? Q2:IronPython和IronRuby怎么样? 我没有看到IronPython / IronRuby中的任何程序集dll。 问题3:有没有简单的方法可以使用C#或F#中的IronPython / IronRuby函数? 任何示例代码都会很棒。

如何使用ErrorListener for IronRuby

我有一个C#程序来执行IronRuby脚本。 但在此之前,我想首先编译该文件,看看是否有任何错误。 但似乎ErrorListener不能正常工作。 我的代码有什么问题吗? class Program { static void Main(string[] args) { try { ScriptEngine engine = null; engine = Ruby.CreateEngine(); ScriptSource sc = engine.CreateScriptSourceFromFile(“MainForm.rb”); ErrorListener errLis = new MyErrorListener(); sc.Compile(errLis); } } class MyErrorListener : ErrorListener { public override void ErrorReported(ScriptSource source, string message, Microsoft.Scripting.SourceSpan span, int errorCode, Microsoft.Scripting.Severity severity) { Console.WriteLine(message); } } […]

使用委托从C#调用IronRuby

是否可以使用委托作为参数从C#调用IronRuby方法,以便yield可以工作? 以下给出了错误数量的参数(1表示0)exception。 Action action = Console.WriteLine; var runtime = Ruby.CreateRuntime(); var engine = runtime.GetEngine(“rb”); engine.Execute(@” class YieldTest def test yield ‘From IronRuby’ end end “); object test = engine.Runtime.Globals.GetVariable(“YieldTest”); dynamic t = engine.Operations.CreateInstance(test); t.test(action);