访问另一个类中列表的元素

时间:2019-02-26 06:57:42

标签: c# list class

可以说我有类似以下内容的东西。

namespace BurgerMachine
{
public class BaseList{

    private static readonly List<Bases> bList = new List<Bases>() //might need to take off readonly
    {
        new Bases(){ BaseID=1, BaseName="Bun"},
        new Bases(){ BaseID=2, BaseName="SeededBun"}
    };
    public static List<Bases> GetList()
    {
        return bList;
    }
}
    public class Bases
    {
        public int BaseID { get; set; }
        public string BaseName { get; set; }
    }
}

现在我想从另一个类访问上述列表的元素,这对我当前的设置是否可行,还是我需要返回更多信息?

我已经看到了一些人创建列表然后从另一个类添加到列表,但不尝试访问已经存在的元素的示例。如果确实存在这样的例子,请指出正确的方向。

第一次以这种方式使用列表,所以我不太确定自己在做什么。任何帮助都会很棒。如果需要更多信息,请询问。

2 个答案:

答案 0 :(得分:2)

这里有几种实现返回列表的最佳方法。

具有静态类

public class BaseListProvider
{
    public static readonly Bases Bun = new Bases() { BaseID = 1, BaseName = "Bun" };
    public static readonly Bases SeededBun = new Bases() { BaseID = 2, BaseName = "SeededBun" };

    public static IEnumerable<Bases> GetList()
    {
        return new[]
        {
            Bun,
            SeededBun
        };
    }
}

public class Bases
{
    public int BaseID { get; set; }
    public string BaseName { get; set; }
}

具有界面,如果您正在使用依赖项注入,该界面将很有帮助

public class BaseListProvider : IBaseListProvider
{
    public static readonly Bases Bun = new Bases() { BaseID = 1, BaseName = "Bun" };
    public static readonly Bases SeededBun = new Bases() { BaseID = 2, BaseName = "SeededBun" };

    public IEnumerable<Bases> GetList()
    {
        return new[]
        {
            Bun,
            SeededBun
        };
    }
}

public interface IBaseListProvider
{
    IEnumerable<Bases> GetList();
}

public class Bases
{
    public int BaseID { get; set; }
    public string BaseName { get; set; }
}

答案 1 :(得分:2)

好吧,您可以像下面这样将列表设为public成员,然后从任何位置访问它

public List<Bases> bList = new List<Bases>()
{
    new Bases(){ BaseID=1, BaseName="Bun"},
    new Bases(){ BaseID=2, BaseName="SeededBun"}
};

您现在可以访问

var blist = new BaseList().bList;

使用当前设置(如已注释),为什么不能只调用静态方法说BaseList.GetList()

相关问题