2009-08-29 5 views
4

J'ai créé une petite classe C# dans une bibliothèque.Appel de C# à partir de IronRuby

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; 
     } 
    } 
} 

La bibliothèque est située dans

C: \ Documents and Settings \ myUser \ Mes documents \ Visual Studio 2008 \ Projects \ Project1 \ helloWorldLib \ bin \ Debug \ helloWorldLib.dll

Comment appelleriez-vous SayHelloWorld à partir d'un script IronRuby?

Je sais que cela semble très simple, mais je n'arrive pas à trouver un exemple de code cohérent après de nombreuses recherches.

Merci beaucoup!

Répondre

7

La première chose à faire attention est que je ne suis pas sûr comment IronRuby va gérer les espaces de noms qui commencent par une lettre minuscule. Si je me souviens bien, votre espace de noms sera simplement ignoré, mais je n'en suis pas sûr. Dans le langage Ruby, les modules (qui sont l'équivalent des espaces de noms C#) doivent commencer par une lettre majuscule. Après avoir modifié l'espace de nom pour commencer par une lettre majuscule - HelloWorldLib, vous pouvez utiliser require ou load_assembly pour charger votre assembly. Require ne chargera votre assembly qu'une seule fois (même si la DLL est requise plusieurs fois) et load_assembly rechargera l'assembly chaque fois qu'il est appelé.

Ce code sera exécuté votre extrait:

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"