Problème pour objet instancier avec constructeur surchargé en IronRuby?

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

  •  26-10-2019
  •  | 
  •  

Question

J'ai un c # classe "Document" avec les constructeurs surchargées (id int), (id guid) et quelques autres options de paramètres - et pas de surcharge avec 0 paramètres. Lorsque je tente de créer un nouvel objet avec IronRuby je trébuche. Il dit qu'il veut avoir 0 arguments, donc:

d = Document.new

fonctionne très bien. Mais quand j'essaie

d = Document.new some_integer

Je reçois le message d'erreur

"wrong number of arguments (1 for 0)"

La classe ressemble def comme ceci:

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

Edit: voici le code complet. Il est dans un contexte Umbraco, et je traduis avec namespaces caseing moins de pouvoir les utiliser dans 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)

Même code en C #:

var existingDocument = new umbraco.cms.businesslogic.web.Document(1065);
Était-ce utile?

La solution

Je me demande si vous frappez un endroit de collision d'espace de noms.
Est-il possible que le document est défini ailleurs dans ce que vous incluez?

Nous ne pouvons pas voir ce que vos regards de classe de base comme
En outre, nous ne pouvons pas voir ce qui exige / vous utilisez comprend

Je mis en place un exemple, et il semble fonctionner comme prévu:

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

Voici ce que la session ressemblait (à l'aide IronRuby 1.1.4.0):

require 'IRConstructorParamSpike.dll' => True

d = Document.new (Ir): 1: dans `const_missing ': objet non initialisée constant :: Document (NameError) de (ir): 1 <- Parce que je ne mentionnaient pas l'espace de noms

d = IRConstructorParamSpike :: Document.new (Ir): 1: nombre incorrect d'arguments (0 pour 1) (ArgumentError) <- Ce que nous attendrions sans constructeur parameterless

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

Pouvez-vous essayer avec ce code exemple simple et voir si vous pouvez créer les objets de la manière que vous attendez?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top