¿Problema para instanciar el objeto con un constructor sobrecargado en Ironruby?

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

  •  26-10-2019
  •  | 
  •  

Pregunta

Tengo el "documento" de clase AC# con constructores sobrecargados (INT ID), (ID de GUID) y algunas opciones de parámetros más, y sin sobrecarga con 0 parámetros. Cuando trato de crear un nuevo objeto con Ironruby, tropiezo. Dice que quiere tener 0 argumentos, así que:

d = Document.new

funciona bien. Pero cuando lo intento

d = Document.new some_integer

Recibo el mensaje de error

"wrong number of arguments (1 for 0)"

La clase Def se ve así:

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

Editar: aquí está el código completo. Está en un contexto de Umbraco, y tradujo los espacios de nombres con un mejor caso para poder usarlos en 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)

Mismo código en C#:

var existingDocument = new umbraco.cms.businesslogic.web.Document(1065);
¿Fue útil?

Solución

Me pregunto si estás llegando a una colisión en el espacio de nombres en alguna parte.
¿Existe alguna posibilidad de que el documento se define en otro lugar en lo que incluye?

No podemos ver cómo se ve tu clase base
Además, no podemos ver lo que requiere/incluye que está usando

Configuré un ejemplo y parece funcionar como se esperaba:

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) { }
    }
}

Así es como se veía la sesión (usando Ironruby 1.1.4.0):

requiere 'irconstructorParamspike.dll' => verdadero

d = document.new (ir): 1: en `const_missing ': objeto constante no inicializado :: document (nameError) de (ir): 1 <- Porque no incluí el espacio de nombres

d = irConstructorParamspike :: document.new (ir): 1: Número incorrecto de argumentos (0 para 1) (ArgumenterRor) <- Lo que esperaríamos sin constructor sin parámetros

d = irConstructorParamspike :: document.new 10 => irConstructorParamspike.document

¿Podría intentar con este código de ejemplo más simple y ver si puede crear los objetos de la manera que espera?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top