可以在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#基类。
谢谢!
答案 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
。