泛型继承关系中,如何在子类中直接访问泛型类T?
假设我创建了一个类A ,并假设类A中定义了许多属性和函数
public class A
{
public int property1 { get; set;}
public float property2 { get; set;}
public bool property3 { get; set;}
......
}
假设有一个泛型基类:GenericBase<T>
public class GenericBase<T> where T : A
{
}
然后我创建一个新类GenericA继承上面的泛型类
public class GenericA : GenericBase<A>
{
}
测试
假设创建了一个GenericA 对象 test
GenericA test = new GenericA();
我如何实现在test中可以直接调用A中的属性或函数呢?就好像GenericA 和 A 之间有继承关系一样?
比如这样:
test.property1;
但是很显然这样写是不允许的?有没有什么办法实现这样的功能呢?
我想过在GenericA 中 重写一次类 A的属性,比如这样(修改之后的代码):
public class A
{
public int property1 { get; set;}
public float property2 { get; set;}
public bool property3 { get; set;}
......
}
public class GenericBase<T>
{
public GenericBase (T obj)
{
a = obj;
}
public A a { get; set;}
}
public class GenericA : GenericBase<A>
{
public int property1
{
get { return a.property1;}
set { a.property1 = value;}
}
public float property2
{
get { return a.property2;}
set { a.property2 = value;}
}
public int property3
{
get { return a.property3;}
set { a.property3 = value;}
}
......
}
再次创建一个对象test
GenericA test = new GenericA();
此时test.property1这样的语句就合法了,并且就像GenericA 和 A 有继承关系一样。
可是这样写的话对于A中的每一个函数,属性,我都得在GenericA 里面重新写一遍,效率很低。
所以请教一下,有更好的办法吗?还是说我的理解本身有问题?