IronRubyのMutableString固有のメソッド
IronRuby と C#のバインディングを通じて、Azure上でホスティング出来ないか?を検討している。
その中でIronRuby の文字列と .NET(C#)の文字列の間について気になったのでまとめておく。
MutableString
IronRubyのString実装は MutableStringと呼ばれるクラス(実装はC#)で作られている。
またIronRubyが.NET/DLR上で動作し、CLRのクラスライブラリとの親和性を考えると 内部表現は UCS-2表現となる。
しかし、Rubyの文字列は Ascii / いわゆるShiftJIS / EUC-JP / UTF-8 などを 自在に操る CSI である。
その為、IronRubyではこれらの間を吸収する MutableString を使い実現している。
参考までに IronPython はそのようなことはない。
C#とのつなぎこむ
どうしても Azureで IronRubyを利用すると考える場合、文字列の連結が必要となる。
主に、IISから来たデータ(主に.NET の String) を IronRuby へと、また逆 IronRubyからの応答を .NET の Stringに変換する事が必要となってくる。
.NETのStringを取得
MutableStringからどうしても .NETのStringが欲しくなる。この時どのようにするか。
str = "ruby string" dotNetObject.Func(str.ToString())
Byte配列
MutableStringからどうしても RubyのStringのバイト列が欲しくなる。この時どのようにするか。
str = "ruby string" dotNetObject.Func(str.ToByteArray())
.NET<->IronRuby
.NETとIronRuby間で文字列変換を行う際にはこれらが必要となるので、覚えておく。
さいごに
バインディング部を C#ソースコードで行うか、Rubyソースコードで行うかによるが、 上記のメソッドは IronRuby特有のメソッドである。覚えておいて損はないと思う。 (得もないと思う)


コメントする