Редко использовать свойство чтения / записи для ведения списка элементов в объекте. То, что вы обычно хотите, это решение, где вы можете просто написать:
foreach (Icon icon in model.Icons) {
//Do something
}
Со свойством чтения / записи Icons
может быть null
, а результатом будет NullReferenceException
.
Что еще хуже, это то, что вы добавите потенциал для тонких ошибок Когда вы начинаете итерацию по Icons
и устанавливаете значение во время итерации, вы можете ожидать, что продолжите итерацию по новому списку. Это не тот случай, вы продолжаете повторять предыдущее значение. Обычно в этих случаях исходная итерация должна завершиться с InvalidOperationException
при продолжении.
Чтобы избежать этой проблемы, используйте коллекцию, производную от System.Collections.ObjectModel.Collection<T>
, и представьте ее как свойство:
public class IconCollection : Collection<Icon> {
//Customize here
}
public class ManifestModel
{
//
public IconCollection Icons { get; } = new IconCollection();
//...
}
Когда вы хотите добавить предметы, вы идете:
model.Icons.Add(icon);
Это позволит избежать проблем, описанных выше.