2011-08-06 39 views
3

我在C#中有一個相對較深的對象樹,需要從IronPython初始化。從IronPython初始化C#列表<T>?

我是新來的蟒蛇,我努力與數組的初始化。

因此,作爲一個例子 - 說我在C#中有這些類

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

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

我可以在Class2中初始化數組,像這樣:

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

在IronPython的 - 我是想這樣的:

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

但我總是會收到此消息:

預期數組[類型],得到的Class1

任何想法?

+0

感謝您的編輯卡梅隆 – chadbr

回答

6

就這一類2個錯誤( ) - 這是我得到的一個例子,而不是張貼真實的代碼!

對於它的價值 - 我能與實際情況初始化列表如下:

from System.Collections.Generic import List 

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

感謝很多卡梅倫!

+0

沒問題;-)這段代碼很有趣,它創建了一個Python列表,其中包含一個對象(一個新的Class1對象),List''構造函數似乎接受IEnumerable從中創建項目。涼! – Cameron

12

這裏有幾個問題。首先,您將bar設置爲類對象Class2(類是Python中的第一類對象)。

你的意思是創建一個實例,像這樣(括號內):

bar = Class2() 

要在IronPython的一個List<T>,你可以這樣做:

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:大聲笑,謝謝;-) – Cameron