public abstract class A
{
public T GetA<T>()
{
return ((A<T>)this).a;
}
}
public class A<T> : A
{
protected T m_A;
public virtual T a
{
get { return m_A; }
set { m_A = value; }
}
}
上面的代码演示了这样几个特性,乍一看有点玄妙,其实主要是因为两个类重名:
- 泛型类可以和非泛型类重名。
- 非泛型类的泛型函数可以把自己(this)强转为子泛型类。
- 可以使用抽象基类来抽象泛型类,供逻辑层进行方便的遍历调用。
其实只是个很简单的语法现象而已。