2010-11-12 72 views
0

目前,我通过创建一个如下所示的静态方法来访问该属性。通过静态类访问继承属性

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

所有我想要实现的是访问列表<的所有属性>。

类之外,我希望能够做到以下几点:

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

谢谢!

+0

是不是你的'添加'无限递归? – Vlad 2010-11-12 21:56:51

回答

0

不要List<>继承,嵌入一个:

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

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

您在'_list'声明中缺少变量名称。 – 2010-11-12 22:04:44

+0

@Nathan,thx,已更正。 – 2010-11-12 22:09:54

1

两件事:

1)不要继承List<T>。实施IList<T>

2)使用单:

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

    private CartCollection() { } 

    // Implement IList<T> here 
} 

此外,因为你是在ASP.NET应用程序中使用这个,你应该知道,静态成员由所有请求共享。恰当地使用这种代码而不使用lock可能会导致崩溃。即使你使用lock,你会和你的用户之间的数据,你可能不希望...

0

为什么子类名单呢?如果您不添加其他功能,为什么不使用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

谢谢大家的建议。你完全正确! – 2010-11-13 02:24:26

+0

你的代码已经足够好了,但我想,使用'Design Patterns'总是被认为是一个'良好的编程习惯'。 – 2010-11-14 04:35:03