C#とIronRubyのかけ橋 MutableString

| コメント(0) | トラックバック(0) このエントリーを含むはてなブックマーク

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特有のメソッドである。覚えておいて損はないと思う。 (得もないと思う)

トラックバック(0)

トラックバックURL: http://www.m-tea.info/mt-tb.cgi/56

コメントする

あわせて読みたいブログパーツ

このブログ記事について

このページは、k1ha410が2009年12月31日 22:11に書いたブログ記事です。

ひとつ前のブログ記事は「WorkerRoleへ外部から接続」です。

次のブログ記事は「WorkerRole と HttpListener」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。