Доступ к элементам списка в другом классе - PullRequest
0 голосов
/ 26 февраля 2019

Допустим, у меня есть что-то вроде следующего.

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, а затем добавляли его из другого класса, но не пытались получить доступ к уже существующим элементам.Если такой пример существует, пожалуйста, укажите мне правильное направление.

Впервые использую списки таким образом, поэтому я не совсем уверен, что я делаю.Любая помощь будет отличной.Если вам нужна дополнительная информация, пожалуйста, спросите.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Ну, вы можете просто сделать список 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;

С вашим текущимsetup (как уже прокомментировано), почему вы не можете просто вызвать статический метод, говоря BaseList.GetList()

0 голосов
/ 26 февраля 2019

Вот несколько реализаций, лучший способ вернуть список.

Со статическим классом

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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...