Alexander Ranger
2012-Sep-24 08:21 UTC
[Ironruby-core] Getting property list from both Ruby and .Net objects
Hello. I need some tools to get property names of both Ruby objects and .Net objects. First I thought that there''ll be no problem with it. I tried to do it like: def GetPropertyList(obj) return obj.instance_variables end But it turned out that when "obj" is a .Net object obj.instance_variables returns nothing. Well, it returns an array but array is empty. For example: require "Foo" include FooModule foo = Foo.new foo.NetVal1 = "Hello" foo.NetVal2 = 100 puts foo.class # => FooModule::Foo puts foo.NetVal1 # => Hello puts doo.NetVal2 # => 100 puts foo.instance_variables # => #it''s blank here puts foo.instance_variables.class # => Array Well, then I thought that I can use reflection to get property list for .Net objects: def GetPropertyList(obj) array = Array.new obj.GetType().GetProperties.each do |prop| array.push prop.name end array end But it didn''t work for a ruby object. I tried to somehow find out weather object is from ruby or .Net and depending on it parse objects, but I couldn''t think of any working solution. So my question is: Give me a hint on how I can parse both ruby and .net objects using one algorithm. Thanks in advance, Alex. -- Posted via http://www.ruby-forum.com/.
Eduardo Blumenfeld
2012-Sep-27 18:12 UTC
[Ironruby-core] Getting property list from both Ruby and .Net objects
Hi Alex: Try: obj.methods obj.public_methods obj.private_methods it will give you the list of all the methods available (From the point of view of IronRuby, a .net object shows the methods you would find two methods for, one for set another for get of a variable, for example, saying that you have a propety of the object called "name" obj.name (would return the actual setting for the variable (get) ) obj.name = "test".to_clr_string (would set the name in the .net object) Note: .to_clr_string is important to convert the ruby string object to the corresponding clr object (System::String) Regards, Eduardo -- Posted via http://www.ruby-forum.com/.
Eduardo Blumenfeld
2012-Sep-27 18:17 UTC
[Ironruby-core] Getting property list from both Ruby and .Net objects
Alex: A quick way of finding all the properties that you can set of a .net object would be: obj.methods.grep(/=/) (filter by all the properties that you can set) -- Posted via http://www.ruby-forum.com/.