Как добавить строку в коллекцию 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;
}
}