Вызов C # из IronRuby - PullRequest
       11

Вызов C # из IronRuby

4 голосов
/ 29 августа 2009

Я создал небольшой класс 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;
        }
    }
}

Библиотека находится в

C: \ Documents and Settings \ myUser \ Мои документы \ Visual Studio 2008 \ Projects \ Project1 \ helloWorldLib \ bin \ Debug \ helloWorldLib.dll

Как бы вы назвали SayHelloWorld из скрипта IronRuby?

Я знаю, что это кажется очень простым, но я не могу найти последовательный пример кода после долгих исследований.

Большое спасибо!

1 Ответ

7 голосов
/ 29 августа 2009

Первое, на что следует обратить внимание, это то, что я не уверен, как 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"
...