是否可以在IronPython中创建泛型类?我想从通用c#类继承,并在顶部实现自定义IronPython类。
例如:
public class A<T>
{
}
第一个IronPython类:
class B[T](A[T]): # Problematic part. I don't know how to create a
# generic ironpython class
IronPython第二类:
class C(B[object]):
因此,在第一个IronPython中就是问题所在。我现在不热衷于创建一个通用类来传递类型。这可能吗?
编辑
我不只是想使用通用的C#类。我想在IronPython中实现自己的方法并从c#类继承。
编辑2
我要实现的是具有python基类
A
的类B
,该基类应具有通用的C#基类C
。 python基本类B
与C#基本类C
的类型无关(这只是通用C#类的特化),但是它必须初始化正确的C#基本类。谢谢!
最佳答案
(铁)Python是一种动态类型化的语言,在python中没有泛型类的概念。您可以从通用.NET类派生,但实际上不能创建通用python类,没有这样的事情。
但是,您可以使用一些装饰器来模仿语法。
class B(object):
class _Meta(type):
def __getitem__(cls, t):
from System.Collections.Generic import List as A # just an example
class _B(A[t]):
pass
return _B
__metaclass__ = _Meta
class C(B[object]):
pass
在示例中,
B
的实际实现是类_B
。