Auparavant, j'avais une classe qui contenait un System.Collections.Generic.List<Item>
interne (où Item est une classe que j'ai créée). La classe wrapper fournissait plusieurs propriétés au niveau de la collection qui fournissaient des totaux, des moyennes et d'autres calculs sur les éléments de la liste. Je créais un BindingSource
autour de ce List<>
enveloppé et un autre BindingSource
autour de ma classe et j'étais capable d'obtenir les éléments dans la liste enveloppée par le premier BindingSource
et les propriétés au niveau de la collection de la classe wrapper en utilisant la seconde.Comment puis-je indexer des données sur des propriétés non associées à un élément de liste dans les classes dérivées? <T>
Un exemple simplifié ressemble:
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
}
Avec les sources de liaison créées de cette façon:
_itemsBindingSource = new BindingSource(oldClass.Items);
_summaryBindingSource = new BindingSource(oldClass);
Récemment, j'ai essayé de changer cette classe à tirer de System.Collections.Generic.List<Item>
au lieu de garder une enveloppé List<>
membre. Mon espoir était de se débarrasser de la couche d'emballage supplémentaire et d'utiliser seulement un BindingSource
au lieu de deux. Cependant, maintenant je trouve que je ne peux pas obtenir les propriétés qui s'appliquent à tous les éléments de la liste (tels que AverageValue
) lorsque je fais une liaison de données. Seules les propriétés des éléments de liste sont disponibles.
Suis-je obligé de revenir à l'utilisation d'un List<>
de Item
s? Ou y at-il un moyen que je peux obtenir à la fois les propriétés de Item
s stocké ma nouvelle classe ainsi que les propriétés qui s'appliquent à la collection elle-même?