Thinking on this further, if there were some sort of interop-specific class method... like attr_clr_property :foo, that caused any methods named foo and foo=(var) to be visible to .Net as properties, that would be sufficient.
Any thoughts on this? B On Thu, Jul 22, 2010 at 9:34 AM, Brian Genisio <briangeni...@gmail.com>wrote: > Curt, > > Thank you very much for engaging :) > > Although I understand what you are saying, from an interop perspective, > this is not desirable. > > In fact, the WPF binding system will see two methods (foo and foo=(val)) > and determine that they are properties that can be bound to. C#, on the > other hand, can't use them as properties. Furthermore, if I want a simple > side effect (like property change notification) in a property, it makes > sense for me to define my own foo and foo=(val) methods. Again, WPF can get > these notifications and read the "properties", but C# just sees methods. > Another case might be where properties are just wrappers around hashes... a > case I am running into. > > At a very minimum, I would expect to be able to create get_foo and > set_foo(value) in ruby to have them be seen as .Net properties, but this > doesn't seem to work either. > > In general, I am trying to understand good interop practices between my > ruby and C# and WPF code, but I can't seem to make anything other than > attr_accessor work. > > Brian > > On Thu, Jul 22, 2010 at 9:17 AM, Curt Hagenlocher <cu...@microsoft.com>wrote: > >> I believe this works as designed. >> >> >> >> The problem is that Ruby doesn’t otherwise distinguish syntactically >> between a property and a method with no parameters. Imagine that you’re in >> tooling such as Visual Studio. By default, the values of properties are >> automatically displayed in the debugger and in tool tips. But if I happen to >> have a no-args method named format_cdrive, I probably don’t want that code >> to be run just to inspect its value. Effectively, attr_accessor, attr_reader >> and attr_writer are used by IronRuby as signals that indicate this operation >> is free of potentially-nasty side effects. >> >> >> >> *From:* ironruby-core-boun...@rubyforge.org [mailto: >> ironruby-core-boun...@rubyforge.org] *On Behalf Of *Brian Genisio >> *Sent:* Thursday, July 22, 2010 5:49 AM >> *To:* ironruby-core@rubyforge.org >> *Subject:* Re: [Ironruby-core] Why does attr_accessor create a property, >> but method is just a method? >> >> >> >> So, I haven't heard anything about this yet on Stack Overflow, or this >> list. >> >> >> >> Does anyone know if this is this a bug in IronRuby interop? >> >> Thanks, >> >> Brian >> >> >> >> On Wed, Jul 21, 2010 at 12:34 PM, Brian Genisio <briangeni...@gmail.com> >> wrote: >> >> This is a cross-post from Stack Overflow, but I haven't heard a peep >> there, so I figured I'd try here: >> >> I am playing around with the interop between C# and IronRuby. I have >> noticed that if I define a property in Ruby using `attr_accessor`, it is >> presented to C# as a property. If, on the other hand, I create the exact >> same code manually, it comes back as a method. >> >> For example, take this code: >> >> var engine = IronRuby.Ruby.CreateEngine(); >> string script = @" >> class Test >> attr_accessor :automatic >> >> def manual >> @manual >> end >> >> def manual=(val) >> @manual = val >> end >> >> def initialize >> @automatic = ""testing"" >> @manual = ""testing"" >> end >> end >> >> Test.new >> "; >> var testObject = engine.Execute(script); >> >> var automatic = testObject.automatic; >> var manual = testObject.manual; >> >> When you look at the C# `automatic` variable, the value is a string of >> "testing". If you look at the C# `manual` variable, it is type >> IronRuby.Builtins.RubyMethod. >> >> Ultimately, I want to create my own properties in Ruby that can be used in >> C#, but I can't seem to make them be visible as properties like >> `attr_accessor` does. >> >> I THINK, that there is some magic going on in the Module code of the Ruby >> source code (ModuleOps.cs:DefineAccessor). Is there any way to do this in >> Ruby code directly? >> >> Thanks, >> Brian >> >> >> >> _______________________________________________ >> Ironruby-core mailing list >> Ironruby-core@rubyforge.org >> http://rubyforge.org/mailman/listinfo/ironruby-core >> >> >
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core