Раньше у меня был класс, который обернул внутренний System.Collections.Generic.List<Item>
(где Item - это класс, который я создал). Класс-оболочка предоставил несколько свойств уровня коллекции, которые предоставили итоги, средние значения и другие вычисления для элементов в списке. Я создавал BindingSource
вокруг этого обернутого List<>
и еще одного BindingSource
вокруг моего класса и смог получить доступ к элементам в обернутом списке через первый BindingSource
и свойства уровня коллекции класса обертки, используя второй.
Упрощенный пример выглядит так:
public class OldClass()
{
private List<Item> _Items;
public OldClass()
{
_Items = new List<Item>();
}
public List<Item> Items { get { return _Items; } }
// collection-level properties
public float AverageValue { get { return Average() } }
public float TotalValue { get { return Total() } }
// ... other properties like this
}
С источниками привязки, созданными таким образом:
_itemsBindingSource = new BindingSource(oldClass.Items);
_summaryBindingSource = new BindingSource(oldClass);
Недавно я попытался изменить этот класс, чтобы он был производным от System.Collections.Generic.List<Item>
вместо того, чтобы хранить завернутый List<>
член. Я надеялся избавиться от лишнего слоя-обертки и использовать только один BindingSource
вместо двух. Однако теперь я обнаружил, что не могу получить свойства, которые применяются ко всем элементам в списке (например, AverageValue
), когда я выполняю привязку данных. Доступны только свойства элементов списка.
Я вынужден вернуться к использованию обернутых List<>
из Item
с? Или есть способ, которым я могу получить как свойства Item
s, хранящиеся в моем новом классе, так и свойства, которые применяются к самой коллекции?