2011-08-06 4 views
3

IronPython에서 초기화해야하는 C#의 비교적 깊은 개체 트리가 있습니다.IronPython에서 C# List <T>을 초기화 하시겠습니까?

저는 python에 익숙하지 않아 배열 초기화에 어려움을 겪고 있습니다. 예를 들어 그래서

은 -

public class Class1 
{ 
    public string Foo {get;set;} 
} 

public class Class2 
{ 
    List<Class1> ClassOnes {get;set;} 
} 

난과 같이 Class2의에서 배열을 초기화 할 수 있습니다 나는 C#에서 이러한 클래스가 있다고 가정 :

은 IronPython에서
var class2 = new Class2(
    ClassOnes = new List<Class1>() 
    { 
     new Class1(Foo="bar") 
    }); 

-이 시도되었다

bar = Class2 
bar.ClassOnes = Class1[Class1(Foo="bar")] 

그러나 나는 항상 다음 메시지를받습니다.

예상 배열 [유형], 클래스 1

어떤 아이디어를 가지고?

+0

카메론 편집 주셔서 감사합니다 – chadbr

답변

6

는 Class2의 실수를 (제작 : 당신이 할 수있는

bar = Class2() 

는 IronPython의에 List<T>을 만들려면 :

당신은 (괄호)이 같은 인스턴스를 생성하기위한 것) - 그게 내가 진짜 코드를 게시하는 대신 예제를 만들기 위해 얻은 것이다! 그것은 가치가 무엇인지에 대한

-이 같은 실제 인스턴스 목록을 초기화 할 수 있었다 :

from System.Collections.Generic import List 

bar.ClassOnes = List[Class1]([Class1(Foo="bar")]) 

덕분에 많은 카메론!

+0

문제 없음 ;-) 해당 스 니펫의 흥미로운 점은'List '생성자가 IEnumerable로 받아들이는 것으로 보이는 하나의 객체 (새로운 Class1 객체)가있는 Python 목록을 만드는 것입니다. 에서 항목을 만들 수 있습니다. 시원한! – Cameron

12

여기에 몇 가지 문제가 있습니다. 먼저 클래스 객체 Class2bar을 설정합니다 (클래스는 Python에서 1 급 클래스 객체입니다).

from System.Collections.Generic import List 

# Generic types in IronPython are supported with array-subscript syntax 
bar.ClassOnes = List[Class1]() 
bar.ClassOnes.Add(Class1()) 
+1

여기에 계시다면 - 맥주를 사주세요. – chadbr

+0

@chadbr : lol, thanks ;-) – Cameron

관련 문제