簡體   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