将类对象转换为接口C#

时间:2019-03-01 13:33:53

标签: c# interface implements

我想知道将类对象转换为从其实现的接口的机会是什么?例如:

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字段?显然这不是接口的领域,因为我们无法与他们合作。感谢您的建议!

1 个答案:

答案 0 :(得分:1)

当您将mapObject强制转换为IArmy接口时,其内部仍然保留mapObject类(Creep),但您只能调用IArmy接口所隐含的内容。 / p>

如果您询问为什么以及如何使用它:您可以创建另一个实现IArmy接口的类,当将其强制转换为IArmy时,可以与其他类相同的方式对其进行处理。实施它。