定义静态.New()方法时,在IronRuby中创建.NET对象

时间:2010-06-29 17:09:00

标签: constructor ironruby

当在类上定义静态.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 类的构造函数似乎是不可能的。

是否有解决方法,或者这是一个错误?

1 个答案:

答案 0 :(得分:1)

第一个只是一个不可避免的歧义。如果要使CLI类看起来像Ruby类,则别无选择,只能将构造函数映射到new方法。因此,如果你同时拥有一个真正的 new方法和一个映射到构造函数的合成方法,无论你做什么,合成方法都会影响真实的方法或者反过来。无论哪种方式,你输了。

这就是为什么所有CLI类都有一个合成的clr_new方法:

Tester.clr_new
# In constructor