无法从源类型转换为目标类型

时间:2015-10-23 14:56:37

标签: c# polymorphism downcast

我正在Unity中编写一个游戏,我正在尝试使用多态来访问2个子类但是一直出错:

  

无法从源类型转换为目标类型

我有一个Places的序列化列表,我正在尝试向下转换为Property,它是Place的子类。我怎么能在Unity中做到这一点?

((Property)Board.GetBoardPlace(Players[PlayerTurn].Position)).Owner = Players[PlayerTurn];

1 个答案:

答案 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中详细了解相关内容。希望这可以帮助!如果您有任何问题,请告诉我。