У меня есть класс «Документ» C# с перегруженными конструкторами (int id), (guid id) и еще несколько параметров параметров и без перегрузки с 0 параметрами. Когда я пытаюсь создать новый объект с IronRuby, я спотыкаюсь. В нем говорится, что он хочет иметь 0 аргументов, поэтому:Проблема создания объекта с перегруженным конструктором в IronRuby?
d = Document.new
работает нормально. Но когда я пытаюсь
d = Document.new some_integer
Я получаю сообщение об ошибке
"wrong number of arguments (1 for 0)"
Класса Защита выглядит следующим образом:
public Document(int id) : base(id)
{
// some code
}
Edit: вот полный код. Это в контексте Umbraco, и я перевожу пространства имен с более низкой caseing, чтобы иметь возможность использовать их в IronRuby:
$LOAD_PATH << "C:\\inetpub-dev\\dev.mysite.com\\bin"
require "cms.dll"
require "businesslogic.dll"
Web = Object.const_get("umbraco").const_get("cms").const_get("businesslogic").const_get("web")
existing_document_id = 1065
existing_document = Web::Document.new(existing_document_id)
же код в C#:
var existingDocument = new umbraco.cms.businesslogic.web.Document(1065);
Спасибо большое - хорошо, поэтому мой Ruby не был совсем не прав, что чувствует себя хорошо.Хорошо возможная проблема пространства имен, интересно, где же, я попытаюсь выглядеть немного больше. Теперь я добавил полный фрагмент кода, надеюсь, что это немного разъяснит. – joeriks
Ах! Я скачал umbraco, чтобы тоже посмотреть. Оказывается, существует метод, определенный в документе, который на самом деле называется «Новый». В этом случае .. Если вы действительно хотите просто использовать contructor (выглядит так!), Тогда вам нужно использовать «.clr_new» для дифференциации. Проверьте это: http://rubyforge.org/pipermail/ironruby-core/2010-June/007081.html –
ничего себе, просто ничего себе, очень полезно и прекрасно работает, спасибо миллион! :) – joeriks