2010-11-12 61 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