IronPython创建泛型类

时间:2015-10-19 13:36:19

标签: c# class generics inheritance ironpython

可以在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#类中继承。

EDIT2

我想要的是一个类A,它有一个python基类B,它应该有一个通用的C#基类C。 python基类B独立于C#基类C的类型(它只是通用C#类的特化),但它必须初始化正确的C#基类。

谢谢!

1 个答案:

答案 0 :(得分:2)

(Iron)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