Benjamin Van der veen
2008-Nov-15 06:33 UTC
[Ironruby-core] StackOverflowException when accessing object properties
Hello all, Why does the stack overflow? class Program { static void Main(string[] args) { ScriptRuntime runtime = Ruby.CreateRuntime(); ScriptEngine engine = runtime.GetRubyEngine(); ScriptScope scope = engine.CreateScope(); scope.SetVariable("my_var", new TestClass() { Text = "Hello world!", Number = 42 }); ScriptSource source engine.CreateScriptSourceFromString("my_var.text"); Console.WriteLine(source.Execute<object>(scope)); } } class TestClass { public string Text; public int Number; } If I set "my_var" to a string and query it''s Length property, no problem. I''m sure I''m missing something?I came up with this code by reading a PDF found on the IronRuby site (http://ironruby.net/@api/deki/files/1/=dlr-spec-hosting.pdf -- redirects to Amazon S3) because I couldn''t find any examples. Maybe I need to somehow import TestClass'' namespace into the scope? Thanks a lot, and apologies in advance for formatting problems (can''t find a preview post option). benjamin -- Posted via http://www.ruby-forum.com/.
Andrew Peters
2008-Nov-15 07:06 UTC
[Ironruby-core] StackOverflowException when accessing object properties
I think this is because you need to reference the IronRuby.Libraries dll. Strange error I know. On Sat, Nov 15, 2008 at 7:33 PM, Benjamin Van der veen <lists at ruby-forum.com> wrote:> Hello all, > > Why does the stack overflow? > > class Program > { > static void Main(string[] args) > { > ScriptRuntime runtime = Ruby.CreateRuntime(); > ScriptEngine engine = runtime.GetRubyEngine(); > > ScriptScope scope = engine.CreateScope(); > scope.SetVariable("my_var", new TestClass() { Text = "Hello > world!", Number = 42 }); > > ScriptSource source > engine.CreateScriptSourceFromString("my_var.text"); > Console.WriteLine(source.Execute<object>(scope)); > } > } > > class TestClass > { > public string Text; > public int Number; > } > > If I set "my_var" to a string and query it''s Length property, no > problem. I''m sure I''m missing something?I came up with this code by > reading a PDF found on the IronRuby site > (http://ironruby.net/@api/deki/files/1/=dlr-spec-hosting.pdf -- > redirects to Amazon S3) because I couldn''t find any examples. Maybe I > need to somehow import TestClass'' namespace into the scope? > > Thanks a lot, and apologies in advance for formatting problems (can''t > find a preview post option). > > benjamin > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Ironruby-core mailing list > Ironruby-core at rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20081115/8d5990b1/attachment.html>
Benjamin van der Veen
2008-Nov-15 22:15 UTC
[Ironruby-core] StackOverflowException when accessing object properties
Hello Andrew, Andrew Peters wrote:> I think this is because you need to reference the IronRuby.Libraries > dll. > Strange error I know. > > On Sat, Nov 15, 2008 at 7:33 PM, Benjamin Van der veen > <lists at ruby-forum.comAh, yes, this fixed the stack overflow error. Strange indeed?thanks for the tip! However, it''s still not properly resolving the property correctly: MissingMethodException: undefined method `text'' for #<My::Namespace::TestClass:0x000005c> I tried changing TestClass'' fields to properties so that they would get compiled as methods: class TestClass { public string Text { get; set; } public int Number { get; set; } } but no dice. Also tried capitalizing "Text". Still works with String.Length though (whether I reference it as "my_var.length" or "my_var.Length". Any ideas? (Also, as somewhat of a side-note, is there a different syntax for accessing field on CLR objects in IronRuby? Is this possible or must they be properties?) Thanks again, benjamin -- Posted via http://www.ruby-forum.com/.
Tomas Matousek
2008-Nov-16 00:03 UTC
[Ironruby-core] StackOverflowException when accessing object properties
Isn''t the class internal? (We should improve error reporting related to visibility) Try to make it public. Public fields should be accessible in the same way properties are. Tomas -----Original Message----- From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Benjamin van der Veen Sent: Saturday, November 15, 2008 2:16 PM To: ironruby-core at rubyforge.org Subject: Re: [Ironruby-core] StackOverflowException when accessing object properties Hello Andrew, Andrew Peters wrote:> I think this is because you need to reference the IronRuby.Libraries > dll. > Strange error I know. > > On Sat, Nov 15, 2008 at 7:33 PM, Benjamin Van der veen > <lists at ruby-forum.comAh, yes, this fixed the stack overflow error. Strange indeed?thanks for the tip! However, it''s still not properly resolving the property correctly: MissingMethodException: undefined method `text'' for #<My::Namespace::TestClass:0x000005c> I tried changing TestClass'' fields to properties so that they would get compiled as methods: class TestClass { public string Text { get; set; } public int Number { get; set; } } but no dice. Also tried capitalizing "Text". Still works with String.Length though (whether I reference it as "my_var.length" or "my_var.Length". Any ideas? (Also, as somewhat of a side-note, is there a different syntax for accessing field on CLR objects in IronRuby? Is this possible or must they be properties?) Thanks again, benjamin -- Posted via http://www.ruby-forum.com/. _______________________________________________ Ironruby-core mailing list Ironruby-core at rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core
Benjamin van der Veen
2008-Nov-16 01:12 UTC
[Ironruby-core] StackOverflowException when accessing object properties
Tomas Matousek wrote:> Isn''t the class internal? (We should improve error reporting related to > visibility) > Try to make it public. Public fields should be accessible in the same > way properties are. > > TomasYep, that was the problem. Declared it public and it works now. Thanks, benjamin -- Posted via http://www.ruby-forum.com/.