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
http://rubyforge.org/mailman/listinfo/ironruby-core
|
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core