"out" parameter
Azon CLR metódusok, amelyek rendelkeznek "out" parameterrel, azok meghívhatók az "out" paraméter nélkül is IronRuby-ban. Ekkor az "out" paramétert egy tömben adja vissza a metódus.
C# metódus, out paraméterrel:
public string Foo(int i, out int j, out int k);
Ennek használata IronRuby-ban:
return_value, j, k = Foo(5)
to_clr_type
"to_clr_type" segítségével kaphatjuk meg az aktuális konstans CLR típus objektumát, ha ez konstans egy CLR typust reprezentál:
>>> System::String.class
=> Class
A .Net-ben a String típusa System.RuntimeType lenne, de a Ruby azt mondja, hogy osztály típusú, mert egy Ruby osztályhoz van "mappelve".
Ahhoz, hogy megkapjuk a tényleges CLR típusát, a "to_clr_type" függvényt kell használni:
>>> System::String.to_clr_type.class
=> System::RuntimeType
clr_member
"clr_member" segítségével japhatjuk meg az aktuálisan használt .NET típus tagjait (tulajdonságok, mezők, függvények). Amikor a System::String.method(:Replace) metódust akarjuk használni, akkor a hívott metódus a Ruby String osztályának Replace metódusát fogja meghívni. Habár nem lehetünk benne biztosak, hogy System::String Replace függvénye nem e lett felülírva a Ruby String osztályában. A "clr_member" fogja biztosítani számunkra, hogy a CLR típus (itt a String) függvénye legyen meghívva.
>>> class System::String
... def Replace(a, b)
... raise "BOOM"
... end
... end
=> nil
>>> System::String.new("a").method(:Replace).call("a", "b")
:2:in `Replace': BOOM (RuntimeError)
from :0
>>> System::String.new("a").clr_member(:Replace).call("a", "b")
=> 'b'
clr_ctor
"clr_ctor" segítségével a CLR típus konstruktorát kapjuk meg. Van néhány CLR típus, amely közvetleneül a neki megfelelő Ruby osztálynak van megfeleltetve( például: System.Threading.Thread a Thread osztályhoz):
>>> System::Threading::Thread.new
:0:in `start': must be called with a block (ThreadError)
from :0
Mivel az osztály közvetlenül a neki megfelelő Ruby osztálra van mappelve, ezért a Ruby Thread konstruktora lett meghívva, ez okozta a problémát. "System::Threading::Thread.clr_ctor" segítségével tudjuk meghívni közvetlenül a CLR-beli konstruktort.
to_clr_string
"to_clr_string" egy kényelmi funkció a String osztályban, amely így néz ki:
class String
def to_clr_string
System::String.new(self)
end
end
Erre azért van szükség, mivel a Ruby String változékony("mutable"), míg a CLR String változtathatatlan ("immutable"), ezért a kettő nem megfeleltethető egymásnak. Ettől függetlenül bármilyen változtathatalan("immutable") függvény meghívható a CLR string típusán, de azok más típusuak lesznek. Ezért célszerű használni a "to_clr_string" metódust!