从IronPython初始化C#List <T>?

cha*_*dbr 3 ironpython

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

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

举个例子 - 假设我在C#中有这些类

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

public class Class2
{
    List<Class1> ClassOnes {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我可以在Class2中初始化数组,如下所示:

var class2 = new Class2(
    ClassOnes = new List<Class1>()
    {
        new Class1(Foo="bar")
    });
Run Code Online (Sandbox Code Playgroud)

在IronPython中 - 我试过这个:

bar = Class2
bar.ClassOnes = Class1[Class1(Foo="bar")]
Run Code Online (Sandbox Code Playgroud)

但我总是得到这样的信息:

期望的数组[类型],得到Class1

有任何想法吗?

Cam*_*ron 15

你有几个问题在这里.首先,您要设置bar类对象Class2(类是Python中的第一类对象).

你打算创建一个像这样的实例(带括号):

bar = Class2()
Run Code Online (Sandbox Code Playgroud)

List<T>在IronPython中创建,您可以:

from System.Collections.Generic import List

# Generic types in IronPython are supported with array-subscript syntax
bar.ClassOnes = List[Class1]()
bar.ClassOnes.Add(Class1())
Run Code Online (Sandbox Code Playgroud)


cha*_*dbr 6

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

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

from System.Collections.Generic import List

bar.ClassOnes = List[Class1]([Class1(Foo="bar")])
Run Code Online (Sandbox Code Playgroud)

非常感谢Cameron!