将类对象转换为接口C#

将类对象转换为接口C#,c#,interface,implements,C#,Interface,Implements,我想知道将类对象强制转换到它从中实现的接口会带来什么机会?例如: public interface IOwner { int Owner { get; set; } } public interface IArmy { Army Army { get; set; } } public interface ITreasure {

我想知道将类对象强制转换到它从中实现的接口会带来什么机会?例如:

     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 field?这显然不是interface的字段,因为我们无法使用它们。谢谢你的建议

当您将
mapObject
转换为
IArmy
接口时,它仍然停留在
mapObject
类(爬行)的内部,但您只能调用
IArmy
接口所暗示的内容


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

正在问接口的意义是什么?是的,这就是继承和动态转换的工作原理,我建议您仔细阅读