Переопределение IReadOnlyList со списком в производном интерфейсе

Вот фрагмент кода, который я пытаюсь сделать:

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 в интерфейсе ReadOnly и List в обычном. Как создать интерфейс ReadOnly для свойств, которые являются коллекциями?

c#,interface,architecture,polymorphism,

0

Ответов: 1


2 принят

Ваш класс должен реализовать оба свойства.

Вы можете реализовать интерфейс явно, поэтому он не будет напрямую доступен из самого класса.

public class GameState : IGameState
{
    public List<PlayerModel> Players { get; set; }

    IReadOnlyList<PlayerModel> IReadOnlyGameState.Players => Players.AsReadOnly();
}
C #, интерфейс, архитектура, полиморфизм,
Похожие вопросы