簡體   English   中英

訪問另一個類中列表的元素

[英]Accessing elements of a list in another 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; }
    }
}

現在我想從另一個類訪問上面列表的元素,這可以用我當前的設置還是我需要返回更多?

我已經看到了一些人創建List然后從另一個類添加但不嘗試訪問已存在的元素的示例。 如果確實存在這樣的例子,請指出正確的方向。

第一次以這種方式使用列表,所以我不太清楚我在做什么。 任何幫助都會很棒。 如果需要更多信息,請詢問。

這里有幾個實現返回列表的最佳方法。

用靜態類

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; }
}

那么你可以讓列表成為下面的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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM