public static void MethodWithBlockParam(BlockParam blockParam) { blockParam.Yield(42); } // Call method with a block parameter, passing a Ruby block var engine = Ruby.CreateEngine(); engine.Execute(@" method_with_block_param do |param| p param end ");
var engine = Ruby.CreateEngine(); var rubyMethod = engine.Runtime.DefineMethod("my_method", (context, parameters, blockParam) => { var param1 = parameters[0].ToString(); var param2 = parameters[1].ToString(); blockParam.Yield(param1 + " " + param2); }); // Call method with a block parameter using Ruby object model dynamic rubyObject = engine.Execute(@" my_object = Object.new def my_object.my_method(param1, param2) yield(param1 + ' ' + param2) end my_object "); string result = rubyObject.my_method("hello", "world") as string; Console.WriteLine(result); // prints "hello world"In both examples, the IronRuby.Runtime package library is used.