从IronPython初始化C#List <t> </t>

时间:2011-08-06 00:16:35

标签: ironpython

我在C#中有一个相对较深的对象树需要从IronPython初始化。

我是python的新手,我正在努力进行数组的初始化。

举个例子 - 假设我在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

有什么想法吗?

2 个答案:

答案 0 :(得分:14)

这里有几个问题。首先,您将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 :(得分:6)

在Class2()上犯了一个错误 - 这就是我得到一个例子而不是发布实际代码!!!

对于它的价值 - 我能够用这样的实际实例初始化List:

from System.Collections.Generic import List

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

非常感谢Cameron!