2009-08-29 18 views
4

私はライブラリに小さなC#クラスを作成しました。ライブラリはIronRubyからC#を呼び出す

Cに位置しています

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace helloWorldLib 
{ 
    public class Greeter 
    { 
     public string SayHelloWorld(string name) 
     { 
      return "Hello world " + name; 
     } 
    } 
} 

:\ DocumentsとSettings \ myuserの\マイドキュメントのVisual Studio 2008の\プロジェクト\ Project1の\ helloWorldLib \ binに\デバッグ\ helloWorldLib.dll \

どう

あなたはIronRubyスクリプトからSayHelloWorldを呼び出しますか?

私はこれがとても簡単だと思いますが、多くの研究の後で一貫したコード例を見つけることができません。

ありがとうございます!

答えて

7

最初に注意しなければならないのは、IronRubyが小文字で始まる名前空間をどのように処理するかがわかりません。私が正しく覚えていれば、あなたの名前空間は単に無視されますが、私はそれについては分かりません。 Ruby言語では、モジュール(C#名前空間に相当)は大文字で始まる必要があります。

大文字のHelloWorldLibで開始するように名前空間を変更した後、requireまたはload_assemblyを使用してアセンブリをロードできます。

requireはアセンブリを一度だけロードします(dllが複数回必要な場合でも)load_assemblyは呼び出されるたびにアセンブリをリロードします。

このコードは、あなたのスニペットを実行します:

require 'C:\Documents and Settings\myUser\My Documents\Visual Studio 2008\Projects\Project1\helloWorldLib\bin\Debug\helloWorldLib.dll' 
greeter = HelloWorldLib::Greeter.new 
greeter.say_hello_world "Michael" 
関連する問題