具有IronPython类型参数的C#泛型
因此,情况是我有一个名为具有IronPython类型参数的C#泛型,c#,.net,clr,ironpython,dynamic-language-runtime,C#,.net,Clr,Ironpython,Dynamic Language Runtime,因此,情况是我有一个名为Foo的C#泛型类,带有一个模板参数T,它具有new()约束。我已经声明我的类如下: class Baz { public Baz() { } } class Foo<T> where T : Baz, new() { // blah blah } 但是,如果在Python中,我尝试执行Foo[Bar],我会收到一个错误,告诉我我的Bar类违反了Foo上的约束(即new()约束) 给出了什么?IronPython对象没有默认构造函数
Foo
的C#泛型类,带有一个模板参数T
,它具有new()
约束。我已经声明我的类如下:
class Baz
{
public Baz() { }
}
class Foo<T>
where T : Baz, new()
{
// blah blah
}
但是,如果在Python中,我尝试执行Foo[Bar]
,我会收到一个错误,告诉我我的Bar
类违反了Foo
上的约束(即new()
约束)
给出了什么?IronPython对象没有默认构造函数。它们需要携带一些附加的可变状态,即Python类型,在实例化类时必须提供该类型。该类型用于在动态调用时解析任何虚拟重载和其他方法 啊,是的,当我意识到模板实际上丢弃了我所有的Python类型信息时,我就这样想了。谢谢你确认这一点。有人能详细说明或者举个例子吗?我对python内部工作原理的了解并不能帮助我跳转到代码应该是什么样子。我只是尝试了一些东西,发现C#函数somefunc(string x){dostuff();}必须被称为somefunc[sometype](“some string”)
class Bar(Baz):
def __init__(self):
""" do various things here """