【发布时间】:2020-01-18 04:30:48
【问题描述】:
我想将泛型类转换为其基类型,具有类和类型继承。
我有这些课程:
public class Segment<K> : SomeStructure where K : SomeStructure{...}
public class XXXXXXData : Segment<Key> {...}
public class Key : SomeStructure {...}
我有一个名为 data 的 XXXXXXData 实例,但如果我像
data as Segment<SomeStructure> 它返回null。
在我有这些代码的地方,变量可以是XXXXData 或任何类型的Segment<>。我该怎么做才能转换为 Segment<AmtsCobolStructure> 以便我可以使用这些基类的方法?
【问题讨论】:
-
基类始终具有任何继承类的最小属性数。因此,您始终可以将基类强制转换为任何继承类,但不能将继承类强制转换为基类,因为继承类中的属性数量更多。您无需执行任何操作即可获取基类的属性,它们会自动成为继承类的一部分。
-
仅仅因为两个类具有继承关系并不意味着使用第一个类作为泛型参数的泛型类具有相同的关系。事实上,他们没有任何东西共同点。
-
@HimBromBeere:你完全错了。继承的类具有基类的所有属性。
-
@jdweng Huuum?我从来没有怀疑过这一点。我只是说泛型类没有任何共同点,即使它们的泛型 arguments 有
标签: c# generics inheritance casting