Лист экземпляров C#

Здраствуйте, форумчане. Не могу разобраться с листом экземпляров, надеюсь на Вашу помощь. Используя фабричный метод в программе, не могу разобраться с заполнением листа экземпляром, делаю его публичным, но не могу получить доступ к нему внутри класса.

 class Menu
{
    public void menu()
    {
        List<Project> projects = new List<Project>();
       // манипуляции с меню
        switch (menu)
        {
            case 1:
                CreateFunc(new ProjectType());
                break;
    }
    static void CreateFunc(CreateType create)
    {
        create.NewObject();
    }
}

Сам фабричный метод:

    abstract class CreateType
{
    public abstract ICreate Add();

    public void NewObject()
    {
        var createtype = Add();
        createtype.Adding();
    }
}

class ProjectType : CreateType
{
    public override ICreate Add()
    {
        return new Project();
    }
}

И класс из которого нужно данные передать в лист projects:

 public interface ICreate
{
    public void Adding();
}

class Project : ICreate
{
    public void Adding()
    {
        Console.Clear();
        string name;
        string language;
        string level;
        // манипуляции по заданию переменных name, language, level
        projects.Add()
    }
}

Суть в том, что мне нужно сохранить эти данные, чтобы использовать в классе Меню, буду благодарен за помощь.


Ответы (1 шт):

Автор решения: Sergey
    class Menu
    {
        public void menu()
        {
            List<Project> projects = new List<Project>();
            // манипуляции с меню
            switch (menu)
            {
                case 1:
                    CreateFunc(new ProjectType());
                    break;
            }

            void CreateFunc(ICreateType create)
            {
                projects.Add(create.Create());
            }
        }
    }

    public interface ICreateType
    {
        public Project Create();
    }

    class ProjectType : ICreateType
    {
        public Project Create()
        {
            return new Project();
        }
    }

    public class Project
    {
        public string Name { get; set; }
        public string Language { get; set; }
        public string Level { get; set; }

        public Project()
        {
            Name = "";
            Language = "";
            Level = "";
        }
    }
→ Ссылка