当在类上定义静态.New()方法时,似乎无法使用其默认构造函数创建对象:
.NET类:
public class Tester
{
public static void New()
{
Console.WriteLine("In Tester.New()");
}
public Tester()
{
Console.WriteLine("In constructor");
}
}
IronRuby代码:
Tester.new
Tester.New
这两行都是 Tester.New(),而不是构造函数。调用 Tester 类的构造函数似乎是不可能的。
是否有解决方法,或者这是一个错误?
答案 0 :(得分:1)
第一个只是一个不可避免的歧义。如果要使CLI类看起来像Ruby类,则别无选择,只能将构造函数映射到new
方法。因此,如果你同时拥有一个真正的 new
方法和一个映射到构造函数的合成方法,无论你做什么,合成方法都会影响真实的方法或者反过来。无论哪种方式,你输了。
这就是为什么所有CLI类都有一个合成的clr_new
方法:
Tester.clr_new
# In constructor