所以,情况是我有一个名为 Foo
的 C# 通用类使用模板参数 T
其中有 new()
约束。我已经宣布我的类(class)是这样的:
class Baz
{
public Baz() { }
}
class Foo<T>
where T : Baz, new()
{
// blah blah
}
在 Python 中:
class Bar(Baz):
def __init__(self):
""" do various things here """
但是,如果在 Python 中,我尝试执行 Foo[Bar]
,我收到一条错误消息,告诉我我的 Bar
类违反了 new()
上的约束(即 Foo<T>
约束) .
什么给了?
最佳答案
IronPython 对象没有默认构造函数。它们需要携带一些额外的可变状态,Python 类型,必须在实例化类时提供。该类型用于在动态调用时解析任何虚拟重载和其他方法。
关于具有 IronPython 类型参数的 C# 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3785896/