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

4

我是一名有帮助的助手,可以为您翻译相关的 IT 技术内容。以下是需要翻译的内容:

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

作为一个新手,我在处理数组初始化时遇到了困难。

例如,假设我在 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")]

但我总是得到这个消息:

期望 Array[Type],但得到了 Class1

有什么想法吗?
2个回答

15

您有几个问题。首先,您将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
如果你在这里 - 我会给你买一杯啤酒。 - Chad Brockman

7

我在Class2()上犯了一个错误 - 这就是我在制作示例而不是发布真实代码时得到的结果!!!

就我的经验而言 - 我能够像这样使用实际实例来初始化列表:

from System.Collections.Generic import List

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

非常感谢你,卡梅伦!

没问题;-) 那段代码很有意思,它创建了一个Python列表,并在其中放入了一个对象(一个新的Class1对象),而List<T>构造函数似乎接受一个可枚举对象以创建项目。很酷! - Cameron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接