Можно ли запретить публичное свойство типа IList<>
от добавления элементов. Например у меня есть этот простой код, который хранит несколько экземпляров в простом списке:Запретить публичное свойство списка при добавлении элементов
class Program
{
private static IList<SomeItem> items = new List<SomeItem>();
static void Main(string[] args)
{
// That ok
Items.Add(new SomeItem { OrderId = 0 });
Items.Add(new SomeItem { OrderId = 1 });
Items.Add(new SomeItem { OrderId = 2 });
Console.WriteLine("Amount: {0}", items.Count);
// This should not be possible
OrderedList.Add(new SomeItem { OrderId = 3 });
OrderedList.Add(new SomeItem { OrderId = 4 });
Console.WriteLine("Amount: {0}", items.Count);
Console.ReadLine();
}
public static IList<SomeItem> Items
{
get
{
return items;
}
}
public static IList<SomeItem> OrderedList
{
get
{
return items.OrderBy(item => item.OrderId).ToList();
}
}
}
Мой API должен разоблачить некоторое свойство, которое возвращает список заказанных товаров (OrderedList
). Все в порядке, но не следует добавлять элементы в этот список, потому что они не будут сохранены в items
. Должен ли я создать свой собственный список только для чтения или мне не хватает лучшего решения. Большое спасибо!
EDIT
Короче говоря: это не должно быть возможно: OrderedList.Add(new SomeItem { OrderId = 4 });
Отлично, спасибо. +1 – BendEg
Не только +1. Это должно быть отмечено как ответ. – niksofteng
Через 9 минут. Итак, давайте подождем :) – BendEg