代码之家  ›  专栏  ›  技术社区  ›  user1255410

用派生接口中的列表重写IReadOnlyList

  •  0
  • user1255410  · 技术社区  · 7 年前

    下面是一段我正在努力工作的代码:

    public interface IReadOnlyGameState
    {
        IReadOnlyList<PlayerModel> Players { get; }
    }
    
    public interface IGameState : IReadOnlyGameState
    {
        new List<PlayerModel> Players { get; set; }
    }
    
    public class GameState : IGameState
    {
        public List<PlayerModel> Players { get; set; }
    }
    

    正如您可以想象的那样,这不起作用,因为只读接口中的IReadonlylist和常规接口中的列表之间存在类型不匹配。如何为属于集合的属性创建只读接口?

    1 回复  |  直到 7 年前
        1
  •  2
  •   M.kazem Akhgary    7 年前

    public class GameState : IGameState
    {
        public List<PlayerModel> Players { get; set; }
    
        IReadOnlyList<PlayerModel> IReadOnlyGameState.Players => Players.AsReadOnly();
    }