Как добавить строку в коллекцию ICollection<string>?

РЕДАКТИРОВАТЬ 2

За последние несколько дней мне помогли решить проблему, которую я пытаюсь решить. Получив полезную поддержку от нескольких пользователей, я столкнулся с ошибкой, которую я пытался исправить в выходные дни, но до сих пор не удалось.

Я создал словарь, где я передаю string Country а также ICollection мест для этой страны.

Dictionary<string, NewCountryClass> NTCD = new Dictionary<string, NewCountryClass>();

public void AddCountryCollection()
{

    newCountryClass = new NewCountryClass(newCountry);
    Collections.Add(newCountryClass);
    NTCD.Add(newCountryClass.Country, newCountryClass);

}


public void AddPlace()
{
    string Country = selectedItem.Country;
    RenameQuestion(placeName);
    NTCD[Country].Place.Add(placeName);    

}

Вот мой newCountryClass где я хранил страну и места в этой стране.

private ICollection<string> _places;
public ICollection<string> Places
{
  get
  {
      return _places;
  }
  set
  {
     if (value == _places)
        return;

     _places = value;
     RaisePropertyChanged(() => Places);
  }
}

Здесь можно добавить места, но я создаю экземпляр своего класса на этапе добавления страны и поэтому не могу пропустить это место. (РЕДАКТИРОВАТЬ - я перенес инициализацию коллекции в конструктор, а не в свойство Places, как рекомендовано).

public NewCountryClass(string country)
{
    _places = new ObservableCollection<string>();

    if (country != null)
    {
        _country = country;
    }
}

Поэтому я попытался создать renamePlace() метод:

public void RenamePlace(string place)
{
    _places.Add(place);
}

Тем не мение, _places все еще кажется нулевым даже с этой попыткой. Есть еще идеи или что-то я не так делаю?

2 ответа

Вам нужно научиться отлаживать программу. По сути, вы пытаетесь создать свой экземпляр NewCountryClass Вот:

public void AddCountryCollection()
{                                  // <<< Put breakpoint here <<<
    newCountryClass = new NewCountryClass(newCountry, placeName);
    Collections.Add(newCountryClass);
    NTCD.Add(newCountryClass.Country, newCountryClass);    
}

Если placeName входной параметр null в конструкторе, то это также null здесь... вам нужно добавить точку останова здесь и выяснить, почему значение null и убедитесь, что это имеет значение на этом этапе в вашей программе.

Не лучше ли инициализировать коллекцию _places в конструкторе, а не свойство get?

public NewCountryClass(string country)
{
    _places = new ObservableCollection<string>();
    if (country != null)
    {
        _country = country;
    }

}

Другие вопросы по тегам