繁体   English   中英

将类对象转换为接口C#

[英]Casting class object to interface C#

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

     public interface IOwner
        {
            int Owner { get; set; }
        }

      public interface IArmy
        {
            Army Army { get; set; }
        }

      public interface ITreasure
        {
            Treasure Treasure { get; set; }
        }

      public class Creep : IOwner, IArmy, ITreasure
       {
        public int Owner { get; set; }
        public Army Army { get; set; }
        public Treasure Treasure { get; set; }   
       }

和与它一起工作的类:

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))我可以从mapObject类访问Army字段吗? 显然这不是接口的领域,因为我们无法与他们合作。 感谢您的建议!

当将mapObjectIArmy接口时,它仍然保留在内部的mapObject类(Creep),但是您只能调用IArmy接口隐含的IArmy

如果您问为什么以及如何使用它:您可以创建另一个实现IArmy接口的类,当将其IArmyIArmy ,可以像实现它的其他类一样处理它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM