是否可以在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

07-25 22:42
查看更多