2010-11-12 7 views
0

Actuellement, j'accède à la propriété en créant une méthode statique comme celle ci-dessous.Accès aux propriétés héritées via une classe statique

public static class CartCollection : List<Cart> 
{ 
    public static void Add(Cart Cart) 
    { 
     Add(Cart); 
    } 
} 

Tout ce que je suis en train de réaliser est d'avoir accès à toutes les propriétés de la liste <>.

En dehors de la classe, je voudrais être en mesure de faire ce qui suit:

Cart cart = new Cart(); 
cart.SomeProperty = 0; 
CartCollection.Add(cart); 

Merci!

+0

Votre 'Add' n'est-il pas une récursion sans fin? – Vlad

Répondre

0

Ne pas hériter de List<>, incorporez un:

public static class CartCollection 
{ 
    private static List<Cart> _list = new List<Cart>(); 

    public static void Add(Cart Cart) 
    { 
     _list.Add(Cart); 
    } 
} 
+0

Il vous manque le nom de la variable dans la déclaration de '_list'. –

+0

@Nathan, merci, corrigé. –

1

Deux choses:

1) Ne pas List<T>. Héritent Mettre en œuvre IList<T>.

2) Utilisez un singleton:

public class CartCollection : IList<Cart> 
{ 
    public static readonly CartCollection Instance = new CartCollection(); 

    private CartCollection() { } 

    // Implement IList<T> here 
} 

En outre, comme vous utilisez ceci dans une application ASP.NET, vous devez savoir que les membres statiques sont partagés par toutes les demandes. L'utilisation appropriée de ce type de code peut entraîner des plantages. Et même si vous utilisez lock, vous partager des données entre vos utilisateurs, que vous ne pouvez pas vouloir ...

0

Pourquoi la sous-classe Liste du tout? Si vous n'ajoutez pas de fonctionnalité supplémentaire, pourquoi ne pas simplement utiliser List<Cart>?

public static class CartCollection 
{ 
    public static readonly List<Cart> Instance = new List<Cart>(); 
} 

Cart cart = new Cart(); 
cart.SomeProperty = 0; 
CartCollection.Instance.Add(cart); 
+0

Merci à tous pour vos suggestions. Tu avais complètement raison! –

+0

votre code est assez bon, mais je suppose, en utilisant 'Design Patterns 'est toujours considéré comme une« bonne pratique de programmation ». –

Questions connexes