Problema per oggetto instantiate con il costruttore sovraccarico in IronRuby?

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

  •  26-10-2019
  •  | 
  •  

Domanda

Ho una classe C # "documento" con costruttori di overload (int id), (GUID ID) e alcune altre opzioni dei parametri - e nessun sovraccarico con 0 parametri. Quando cerco di creare un nuovo oggetto con IronRuby inciampo. Si dice che vuole avere 0 argomenti, così:

d = Document.new

funziona bene. Ma quando provo

d = Document.new some_integer

ottengo il messaggio di errore

"wrong number of arguments (1 for 0)"

La classe sembra def in questo modo:

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

Edit: ecco il codice completo. E 'in un contesto Umbraco, e mi traducono spazi dei nomi con caseing inferiore per essere in grado di utilizzarli in 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)

Lo stesso codice in C #:

var existingDocument = new umbraco.cms.businesslogic.web.Document(1065);
È stato utile?

Soluzione

Mi chiedo se si sta colpendo un qualche spazio dei nomi di collisione.
C'è qualche possibilità Tale documento è definito da qualche altra parte in quello che si sta includendo?

Non possiamo vedere ciò che il tuo aspetto classe di base come
Inoltre, non siamo in grado di vedere ciò che richiede / comprende che si sta utilizzando

I istituito un esempio, e sembra funzionare come previsto:

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

Ecco ciò che la sessione sembrava (usando IronRuby 1.1.4.0):

require 'IRConstructorParamSpike.dll' => True

d = Document.new (Ir): 1: in `const_missing ': non inizializzata costante oggetto :: Document (NameError) da (ir): 1 <- Perché non ho incluso lo spazio dei nomi

d = IRConstructorParamSpike :: Document.new (Ir): 1: numero errato di argomenti (0 per 1) (ArgumentError) <- Quello che ci si aspetterebbe senza senza parametri costruttore

d = IRConstructorParamSpike :: Document.new 10 => IRConstructorParamSpike.Document

Potresti provare con questo codice di esempio più semplice e vedere se è possibile creare gli oggetti nel modo in cui vi aspettate?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top