C# 在IronRuby中用重载构造函数实例化对象时出现问题?
我有一个c#类“Document”,它具有重载构造函数(int-id),(guid-id)和其他一些参数选项,并且没有重载0个参数。当我试图用IronRuby创建一个新对象时,我绊倒了。它表示希望有0个参数,因此:C# 在IronRuby中用重载构造函数实例化对象时出现问题?,c#,ironruby,C#,Ironruby,我有一个c#类“Document”,它具有重载构造函数(int-id),(guid-id)和其他一些参数选项,并且没有重载0个参数。当我试图用IronRuby创建一个新对象时,我绊倒了。它表示希望有0个参数,因此: d = Document.new 很好。但是当我尝试的时候 d = Document.new some_integer 我收到了错误信息 "wrong number of arguments (1 for 0)" def类如下所示: public Document(int id
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)
我想知道您是否在某处遇到了名称空间冲突。
文档是否有可能在您所包含的内容中的其他地方定义 我们看不到您的基类是什么样子的
此外,我们无法看到您正在使用的要求/内容
我树立了一个榜样,它似乎如预期的那样起作用:
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):
需要“IRConstructorParamSpike.dll”
=>正确
d=文件。新
(ir):1:在“const_missing”中:未初始化的常量对象::文档(NameError)
from(ir):1非常感谢-好的,所以我的Ruby当时并没有完全错,感觉很好。好的,一个可能的名称空间问题,不知道在哪里,我将尝试在那里看得更详细一些。我现在添加了完整的代码片段,希望澄清一点。啊!我也下载了umbraco来看看。事实证明,在文档上定义了一个方法,它实际上被命名为“New”。在这种情况下。。如果您真的只想使用构造函数(看起来是这样!),那么您需要使用“.clr\u new”来区分。看看这个:哇,只是哇,非常有帮助,效果非常好,非常感谢!)
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) { }
}
}