Справка по вложенным классам в C #

1

Двухчастный вопрос

Работа над программой MDI, предназначенной для отслеживания любого количества инвентарей универсальных магазинов, использующих фрагмент кода, предоставленный нам нашим учителем. Мой мыслительный процесс состоял в том, что "у магазина есть имя и запись элементов", поэтому определение класса ниже отражает степень того, что я определил в качестве хранилища.

Часть 1) Как создать массив неизвестного количества класса Запись в классе Store? Идея состоит в том, что магазин не будет ограничен, скажем, 100 различными предметами. Для каждого элемента есть одна запись, и это должно учитывать возможность добавления нового.

Часть 2) Как мне построить класс за пределами этого? В принципе, у меня появится окно, в котором запрашивается информация об элементе (имя, идентификатор Num и т.д.). Как создать новую запись в магазине?

Спасибо за помощь. Определение класса ниже.

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inventory
{
    class Store
    {
        public Store() { }
        public Store(string name) { }
        public string name { get; set; }

        [Serializable]
        class Record
        {
            public Record() { }
            public Record(int ID, int Quantity, double Price, string Name) { }
            public int id { get; set; }
            public int quantity { get; set; }
            public double price { get; set; }
            public string name { get; set; }
        }
    }
}
Теги:
class
inner-classes

1 ответ

3
Лучший ответ

Просто определите классы отдельно и определите коллекцию одного внутри другого.

Я использовал частный сеттер, чтобы вы могли инициализировать его только внутри класса, а затем добавлять и удалять элементы извне класса.

namespace Inventory
{
    class Store
    {
        public Store() : this(null) { }
        public Store(string name) {
             Records = new List<Record>();
        }
        public string name { get; set; }

        public List<Record> Records { get; private set; }
    }

    class Record
    {
        public Record() { }
        public Record(int ID, int Quantity, double Price, string Name) { }
        public int id { get; set; }
        public int quantity { get; set; }
        public double price { get; set; }
        public string name { get; set; }
    }
}
  • 0
    Это работает. Благодарю. Но что бы вы написали для его инициализации? Я извлекаю информацию из формы, заполненной текстовыми полями, так как бы я сказал «XXXXXXX = new Record ();» и назначить его в список? Я знаком со списками Java, но все еще плохо знаком с c #.
  • 1
    Вы можете добавить метод Store в AddRecord(Record record) или AddCollection(List<Record> collection) который изменяет хранилище. Это также может делать такие вещи, как управление дубликатами (инвентаризация - добавление одной и той же записи дважды означает, что у вас есть счет = 2). Затем форма создает список и вызывает метод Store.Add (..)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню