Thumbs up :)

You might however expect this to work for all CLR types. In which case you can 
indeed monkey patch it as well (kind of):

>>> class Object
...   def to_s
...     self.class.name[0,8] == "System::" ? to_string.to_s : super
...   end
... end
=> nil
>>>
=> nil
>>> require 'mscorlib'
=> true
>>>
=> nil
>>> System::Convert.to_int64(1234)
=> 1234

Tomas

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Michael Letterle
Sent: Friday, December 05, 2008 1:58 PM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Handling C# lower case namespaces

Just monkey-patch it:

class System::Int64

     def inspect
          self.to_string.to_s
     end
end

;)


On Fri, Dec 5, 2008 at 4:50 PM, Tomas Matousek <[EMAIL PROTECTED]<mailto:[EMAIL 
PROTECTED]>> wrote:

Well, that's very unfortunate. They seems to break .NET guidelines for 
namespace naming. It's not compatible with Ruby language to have lowercased 
namespaces since they behave like modules. Module names must start with an 
upper case. We can add some API to overcome this, but it won't be pretty. 
Something like



clr.class_get :foo, :bar, :baz would return class for type foo.bar.baz.



For now you can use reflection API to get the type (and Ruby class for that 
type):

System::Type.get_type("foo.bar.baz").to_class



As for Int64... it prints #<System::Int64:0x000005e>, which is not particularly 
useful. It should probably call ToString. I'll file a bug.



Tomas



From: [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]> [mailto:[EMAIL 
PROTECTED]<mailto:[EMAIL PROTECTED]>] On Behalf Of Aaron Feng
Sent: Friday, December 05, 2008 1:07 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
Subject: [Ironruby-core] Handling C# lower case namespaces



It seems like the current version does not handle lower case namespaces when 
referencing a .NET DLL.  It thinks it is a method call whenever a constant 
starts with lower case.  It also doesn't handle non-alphabet characters such as 
_ (underscore).

I'm trying to call WCF service from IronRuby via the proxies file.  svcutil 
converts all namespaces in the proxies file to lower case.  Here's some info on 
it:

http://connect.microsoft.com/wcf/feedback/ViewFeedback.aspx?FeedbackID=298408

I also noticed that "puts" does not output the value of Int64.  However, it 
does if I use Console.WriteLine in my ruby program.

_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org<mailto:Ironruby-core@rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core



--
Michael Letterle
[Polymath Prokrammer]
http://blog.prokrams.com

_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to