Проблема при использовании только геттера и проблема со списком в С#

Я работаю над приложением, которое использует список для обработки предыдущих догадок пользователя. Ниже приведен (частный) список и свойство для доступа к списку.

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

Теперь к проблеме. Код ниже генерирует сообщение об ошибке:

  1. TheNameOfTheClass.PreviousGuesses.get должен объявлять тело, потому что оно не помечено как abstract или extern. Автоматически реализуемые свойства должны определять методы доступа get и set.
  2. Невозможно неявно преобразовать тип System.Collections.Generic.List в System.Collections.ObjectModel.ReadOnlyCollection.

Как это решить? Заранее спасибо!

private List<int> _previousGuesses;

public ReadOnlyCollection<int> PreviousGuesses {
    get {
        return _previousGuesses;
    }
}

РЕДАКТИРОВАТЬ: Итак, проблема № 2 решена (спасибо Zortkun!). Как насчет первой проблемы, что я не могу использовать только геттер, есть идеи?


person holyredbeard    schedule 11.02.2012    source источник
comment
Если я правильно помню, у ReadOnlyCollection есть конструктор, который возьмет ваш список. return new ReadOnlyCollection(_previousGuesses); Попробуйте перекомпилировать и посмотрите, исчезнет ли другая ваша ошибка.   -  person GGulati    schedule 12.02.2012
comment
вам нужно инициализировать коллекцию, прежде чем пытаться получить к ней доступ из вызова метода, Getter — это просто вызов метода.   -  person Lloyd    schedule 12.02.2012


Ответы (1)


Я предполагаю, что одолжение не в том, чтобы публиковать первое, что всплывает в Google, но как насчет этого?

   return _previousGuesses.AsReadOnly();

Из здесь

person Orkun Ozen    schedule 11.02.2012
comment
Я думал, что первая проблема связана со второй. @JasonCraig, не могли бы вы рассказать о втором (если он у вас есть / помните)? - person Orkun Ozen; 22.02.2012