我想知道将类对象转换为从其实现的接口的机会是什么?例如:
public static class Interaction
{
public static void Make(Player player, object mapObject)
{
if (mapObject is IArmy)
if (player.CanBeat(((IArmy)mapObject).Army))
{
if (mapObject is IOwner)
((IOwner)mapObject).Owner = player.Id;
if (mapObject is ITreasure)
player.Consume(((ITreasure)mapObject).Treasure);
}
和与其一起使用的类:
(player.CanBeat(((IArmy)mapObject).Army))
现在,当我调用此行时:{{1}}是否可以从mapObject类访问Army字段?显然这不是接口的领域,因为我们无法与他们合作。感谢您的建议!
答案 0 :(得分:1)
当您将mapObject
强制转换为IArmy
接口时,其内部仍然保留mapObject
类(Creep),但您只能调用IArmy
接口所隐含的内容。 / p>
如果您询问为什么以及如何使用它:您可以创建另一个实现IArmy
接口的类,当将其强制转换为IArmy
时,可以与其他类相同的方式对其进行处理。实施它。