2010-06-29 3 views
0

이 클래스에 정의 된 정적 .new를() 메소드가있는 경우 기본 생성자를 사용하여 객체를 생성하는 것은 불가능 보인다는 아이언 루비에서 .NET 객체를 생성

.NET 클래스 :

public class Tester 
{ 
    public static void New() 
    { 
     Console.WriteLine("In Tester.New()"); 
    } 

    public Tester() 
    { 
     Console.WriteLine("In constructor"); 
    } 
} 

아이언 루비 코드 :

Tester.new 
Tester.New 

모두를 이 선들은 Tester.New()이 아니며 건설업자가 아닙니다. 시험기 클래스 클래스의 생성자를 호출하는 것은 불가능합니다.

해결 방법이 있습니까? 아니면 버그입니까?

답변

1

첫 번째 것은 피할 수없는 모호성입니다. CLI 클래스를 Ruby 클래스처럼 보이게하려면 생성자를 new 메소드에 매핑하는 것 외에는 다른 방법이 없습니다. 따라서 실제new 메서드와 생성자에 매핑 된 합성 된 메서드가 모두있는 경우 합성 메서드는 실제 또는 다른 방법으로 그림자를 둡니다. 어느 쪽이든, 당신은 잃게됩니다.

Tester.clr_new 
# In constructor 
+0

은 정말 두 번째 경우에 번역하지 않습니다 : 모든 CLI 클래스 합성 clr_new 방법이 이유

. 그것은 예상대로 static New() 메서드를 호출합니다. –

+0

@Philippe Leybaert : 예, 물론입니다. 왜 내가 혼란스러워하는지 모르겠다. * 번역을 수행했다면 생성자를 분명히 호출 할 것입니다. –