Xerxes Battiwalla
2009-Apr-29 12:05 UTC
[Ironruby-core] Implementing get_Item in Ruby for access in .NET
Hi there. We''re trying to access a ruby implementation of a Hash from .NET but having trouble getting the following snip to work require ''Dependencies.dll'' class ParameterList ? ? ? ?include Namespace::IParameterList ? ? ? ?@parameter_hash ? ? ? ?def initialize ? ? ? ? ? ? ? ?@parameter_hash = Hash.new ? ? ? ?end ? ? ? ?def []= key, value ? ? ? ? ? ? ? ?@parameter_hash[key] = value ? ? ? ?end ? ? ? ?def [] key ? ? ? ? ? ? ? ?@parameter_hash[key] ? ? ? ?end ? ? ? ?def get_Item key ? ? ? ? ? ? ? ?@parameter_hash[key] ? ? ? ?end end and on the .NET side: public interface IParameterList : IEnumerable { ? ?int Count { get; } ? ?IParameter this[string name] { get; } ? ?IParameter this[int index] { get; } ? ?IEnumerator GetEnumerator(); ? ?event ParameterValueChangedEventHandler OnParameterValueChanged; } When we call it from .NET with the following code (The parameters object is an instance of the Ruby ParamterList class ): parameter = parameters["Key"]; The error returned is NoMethodError: undefined method `get_Item'' for #<ParameterList:0x0000104> Is it possible to have a Ruby object with an indexer which is callable from C#? Thanks, Xerx.
Curt Hagenlocher
2009-Apr-29 15:37 UTC
[Ironruby-core] Implementing get_Item in Ruby for access in .NET
I don''t think there''s any attempt right now to identify an indexer when overriding virtual methods. This means that the normal Rubification rules kick in and you get def item key end def item= key, value end The second of these, of course, isn''t usable from within Ruby -- though I think it should still work correctly when called by C# through the interface. Obviously, this should be entered as a work item on Codeplex if it isn''t there already. -----Original Message----- From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Xerxes Battiwalla Sent: Wednesday, April 29, 2009 5:05 AM To: ironruby-core at rubyforge.org Subject: [Ironruby-core] Implementing get_Item in Ruby for access in .NET Hi there. We''re trying to access a ruby implementation of a Hash from .NET but having trouble getting the following snip to work require ''Dependencies.dll'' class ParameterList ? ? ? ?include Namespace::IParameterList ? ? ? ?@parameter_hash ? ? ? ?def initialize ? ? ? ? ? ? ? ?@parameter_hash = Hash.new ? ? ? ?end ? ? ? ?def []= key, value ? ? ? ? ? ? ? ?@parameter_hash[key] = value ? ? ? ?end ? ? ? ?def [] key ? ? ? ? ? ? ? ?@parameter_hash[key] ? ? ? ?end ? ? ? ?def get_Item key ? ? ? ? ? ? ? ?@parameter_hash[key] ? ? ? ?end end and on the .NET side: public interface IParameterList : IEnumerable { ? ?int Count { get; } ? ?IParameter this[string name] { get; } ? ?IParameter this[int index] { get; } ? ?IEnumerator GetEnumerator(); ? ?event ParameterValueChangedEventHandler OnParameterValueChanged; } When we call it from .NET with the following code (The parameters object is an instance of the Ruby ParamterList class ): parameter = parameters["Key"]; The error returned is NoMethodError: undefined method `get_Item'' for #<ParameterList:0x0000104> Is it possible to have a Ruby object with an indexer which is callable from C#? Thanks, Xerx. _______________________________________________ Ironruby-core mailing list Ironruby-core at rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core