Yes, this has been reported before (in fact, I think it was when someone was writing "using" ☺) and we haven't yet worked out a resolution. I'll see if there's something quick that can be fixed here later today.
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Orion Edwards Sent: Monday, September 08, 2008 10:12 PM To: ironruby-core@rubyforge.org Subject: Re: [Ironruby-core] Mysteriously broken calls to dispose? Follow-up If I call $fs.dispose(true), then it works. It seems there's a protected dispose(bool) in a derived class. I can't actually call Dispose(true) from C# as the compiler tells me it's protected. It strikes me as somewhat broken that the method which ironruby actually invokes is the one that you shouldn't invoke... At any rate, I'd be overjoyed if anyone could point me in the direction of a fix. I'm trying to write 'using' (a la C#) in ruby as part of demo for my local .NET user group. It should be trivial and showcase how awesome IronRuby is :-( Orion Edwards wrote: I don't seem to be able to call Dispose on a filestream. Needless to say this is problematic. Here's a paste, straight from the IR console (latest svn version 141) >>> require 'mscorlib' => true >>> include System::IO => Object >>> $fs = FileStream.new( 'file.txt', FileMode.Open ) => #<System::IO::FileStream:0x000005c> >>> $fs.Dispose c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\matchcaller.generated.cs:30:in `Call2': wrong number or type of arguments for `Dispose' (ArgumentError) from c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\callsite.cs:275:in `UpdateAndExecute' from c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\updatedelegates.generated.cs:38:in `Update2' from :0 >>> All the other methods on the filestream object work fine (read_all_text, and so on), but the call to dispose crashes. Likewise, I get a crash calling methods with overloads, which looks like it may (??) be related. >>> require 'mscorlib' => true >>> include System::IO => Object >>> $bytes = System::IO::File.read_all_bytes( 'file.txt' ); nil # nil is to >>> prevent ir from printing the GIANT ARRAY => nil >>> $text = System::Text::Encoding.UTF8.get_string($bytes) c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\matchcaller.generated.cs:35:in `Call3': wrong number or type of arguments for `get_string' (ArgumentError) from c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\callsite.cs:275:in `UpdateAndExecute' from c:\development\ironruby\trunk\src\microsoft.scripting.core\actions\updatedelegates.generated.cs:45:in `Update3' from :0 >>> $text = System::Text::Encoding.UTF8.get_string($bytes, 0, $bytes.length) => "PROPER TEXT GOES HERE" It seems like it can't figure out that there is GetString(bytes) and GetString(bytes, index, length) and just uses the latter always. Is there a solution for either of these problems? Thanks a lot, Orion ________________________________ _______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org<mailto: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