Вопрос

Я получаю следующее исключение, когда пытаюсь использовать сценарий Ruby, чтобы изменить список строк C#.

Неправленное исключение: System.argumentException: значение «Scott» не имеет типа «System.string» и не может использоваться в этой общей коллекции.

C#

IList<string> names = new List<string>();
names.Add("scott");
names.Add("jason");

ScriptRuntime runtime = IronRuby.Ruby.CreateRuntime();
ScriptEngine engine = runtime.GetEngine("IronRuby");
ScriptScope scope = engine.CreateScope();
scope.SetVariable("names", names);
engine.ExecuteFile("test.rb", scope);

foreach (var name in names)
{
   Console.WriteLine(name);
}

Рубин

names.map! { |item| item.capitalize}
Это было полезно?

Решение

Добавлять to_clr_string в код Ruby:

names.map! { |item| item.capitalize.to_clr_string }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top