Thanks Shay. OK your code works. But my trouble seems to come in with the Generic method.
When I do: public class Class1 { public string DoSomething(ref string test) { test = test + "tamtamtam"; return "return value"; } public string DoSomethingElse<T>(ref T test) { return test.ToString(); } } and then call it from IR: >>> c = TestClass::Class1.new => TestClass.Class1 >>> c.do_something("Bla") => ['return value', 'Blatamtamtam'] >>> c.do_something_else("Bla") Microsoft.Scripting.Core:0:in `Bind': Expression of type 'IronRuby.Builtins.Muta bleString&' cannot be used for parameter of type 'IronRuby.Builtins.MutableStrin g' of method 'System.String DoSomethingElse[MutableString](IronRuby.Builtins.Mut ableString ByRef)' (ArgumentError) from Microsoft.Scripting.Core:0:in `BindCore' from :0 On Thu, Feb 11, 2010 at 4:12 PM, Shay Friedman <shay.fried...@gmail.com>wrote: > It returns another return value with the new ref value. > > For example, if you have the next c# class: > public class Class1 > { > public string DoSomething(ref string test) > { > test = test + "tamtamtam"; > > return "return value"; > } > } > > This is the IronRuby code you can write to use it: > >>> require 'c:\dev\TestApps\TestClass\TestClass\bin\Debug\TestClass.dll' > => true > >>> c = Class1.new > => TestClass.Class1 > >>> str = "hello" > => "hello" > >>> result = c.do_something(str) > => ['return value', 'hellotamtamtam'] > > Pay attention that the result variable is an array that contains the method > return value as the first item and the ref value as the second parameter. > > Shay. > -------------------------------------------------------- > Shay Friedman | .NET Technologies Expert | Author of IronRuby Unleashed | > Sela Technology Center > Blog: http://IronShay.com | Twitter: http://twitter.com/ironshay > > > On Thu, Feb 11, 2010 at 3:44 PM, Michael Erasmus <michaeleras...@gmail.com > > wrote: > >> Hi Everyone, >> >> I'm trying to write a IronRuby script that interops with a a .NET assembly >> written in C#. >> >> It has a class that derives from a base class in the .NET assembly. One of >> the base class protected methods looks like this: >> >> protected void OnNotifyPropertyChanged<T>(string name, ref T localmember, >> T value) >> { >> ...... >> } >> >> I can't for the life of me figure out how to call this method from IR in >> my derived class. >> The documentation mentions that you can call *out *parameters without >> using them as arguments, but I can't seem to find anything about *ref * >> params. >> >> If I just try calling the method like this: >> >> OnNotifyPropertyChanged(property_name, value, value) >> >> I get this error: >> >> *Microsoft.Scripting.Core:0:in `Bind': Expression of type >> 'IronRuby.Builtins.Muta* >> *bleString&' cannot be used for parameter of type >> 'IronRuby.Builtins.MutableStrin* >> *g' of method 'Void >> #base#OnNotifyPropertyChanged[MutableString](System.String, I* >> *ronRuby.Builtins.MutableString ByRef, IronRuby.Builtins.MutableString)' >> (Argumen* >> *tError)* >> * from Microsoft.Scripting.Core:0:in `BindCore'* >> * from ./dynamic_event_item.rb:22:in `method_missing'* >> * from :0* >> >> >> Am I missing something? >> >> Thanks >> >> Michael Erasmus >> >> >> _______________________________________________ >> 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 > >
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core