我正在Unity中编写一个游戏,我正在尝试使用多态来访问2个子类但是一直出错:
无法从源类型转换为目标类型
我有一个Places
的序列化列表,我正在尝试向下转换为Property
,它是Place
的子类。我怎么能在Unity中做到这一点?
((Property)Board.GetBoardPlace(Players[PlayerTurn].Position)).Owner = Players[PlayerTurn];
答案 0 :(得分:0)
如果类型Place
列表中的项目最初是使用基类型Place
实例化的,那么I don't think you can/should downcast (or rather, do type conversion) in this manner,至少不是像C#这样的托管语言。在填充列表时,请考虑重新设计或将项目实例化为类型Property
:
List<Place> Places = new List<Place>();
Places.Add(new Property());
然后,当您需要使用它们时,可以将它们转换为Property
类型:
Property property = Places[0] as Property;
if (property != null){
// Conversion successful
}
您可以在此Stack Overflow question中详细了解相关内容。希望这可以帮助!如果您有任何问题,请告诉我。