Проблема создать объект с перегруженным конструктором в Ironruby?

StackOverflow https://stackoverflow.com/questions/6310599

  •  26-10-2019
  •  | 
  •  

Вопрос

У меня есть AC# Class «Document» с перегруженными конструкторами (INT ID), (идентификатор GUID) и некоторые дополнительные параметры параметров - и без перегрузки с 0 параметрами. Когда я пытаюсь создать новый объект с Ironruby, я спотыкаюсь. Он говорит, что хочет иметь 0 аргументов, так что:

d = Document.new

работает отлично. Но когда я пытаюсь

d = Document.new some_integer

Я получаю сообщение об ошибке

"wrong number of arguments (1 for 0)"

Класс def выглядит так:

public Document(int id) : base(id)
{
  // some code
}

РЕДАКТИРОВАТЬ: Вот полный код. Он находится в контексте Umbraco, и я перевожу пространства имен с более низким примером, чтобы использовать их в 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);
Это было полезно?

Решение

Интересно, если вы где -то попадаете в столкновение с имен.
Есть ли вероятность того, что документ определяется где -то еще в том, что вы включаете?

Мы не видим, как выглядит ваш базовый класс
Кроме того, мы не можем видеть, что требует/включает в себя вы используете

Я поставил пример, и он, кажется, работает как ожидалось:

namespace IRConstructorParamSpike
{
    public abstract class BaseDocument
    {
        public BaseDocument(int id) { }
    }

    public class Document : BaseDocument
    {
        public Document(int id) : base(id) { }
    }

    public class SomeDocument : BaseDocument
    {
        public SomeDocument(int id) : base(id) { }
    }
}

Вот как выглядела сеанс (используя Ironruby 1.1.4.0):

Требуется 'irconstruproparamspike.dll' => true

d = document.new (ir): 1: в `const_missing ': ненициализированный постоянный объект :: document (nameerror) из (ir): 1 <- Потому что я не включил пространство имен

d = irconstrupropramspike :: document.new (ir): 1: неправильное количество аргументов (0 для 1) (ArgementError) <- Что мы ожидаем без параметра.

d = irconstrupropramspike :: document.new 10 => irconstruprupraparamspike.document

Не могли бы вы попробовать с этим более простым примером кода и посмотреть, сможете ли вы создать объекты так, как ожидаете?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top