我在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
有什么想法吗?
答案 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!