通过静态类访问继承的属性

时间:2010-11-12 21:47:01

标签: c# asp.net oop inheritance static

目前,我正在通过创建如下所示的静态方法来访问该属性。

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

我想要实现的是访问List&lt;&gt;的所有属性。

在课堂之外,我希望能够做到以下几点:

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

谢谢!

3 个答案:

答案 0 :(得分: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,您也会在用户之间共享数据,这可能是您不想要的......

答案 1 :(得分:0)

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

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

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

答案 2 :(得分: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);