Задать вопрос

Как создать «базу данных» в отдельном классе?

Здравствуйте.

У меня есть некоторая база данных. Например, вес, длина и материал каждого изделия.

Данные

Изделие "Брусок" имеет следующие параметры:
int weightOfProduct = 2; // Вес изделия в килограммах.
int lengthOfProduct = 50; // Длина изделия в сантиметрах.
string materialOfProduct = "Дерево"; // Материал изделия.

Изделие "Арматура" имеет параметры:
int weightOfProduct = 4;
int lengthOfProduct = 200;
string materialOfProduct = "Сталь";

Изделие "Гвоздь" имеет параметры:
int weightOfProduct = 1;
int lengthOfProduct = 25;
string materialOfProduct = "Сталь";


Мне необходимо хранить эту базу данных в отдельном классе "Products", так, чтобы при обращении из метода любого другого класса я мог передать название одного изделия в виде строки ("Брусок" или "Арматура" или "Гвоздь"), и обратно получить значения параметров этого изделия (weightOfProduct, lengthOfProduct, materialOfProduct).

Как это можно реализовать в C# ?

P.S. Возможно я зря поставил сложность вопроса простой. Возможно это Middle.
P.P.S. Я сделал таким способом:
Спойлер
class Products
    {
        public string weightOfProduct { get; set; } // Вес изделия в килограммах.
        public int lengthOfProduct { get; set; } // Длина изделия в сантиметрах.
        public int materialOfProduct { get; set; } // Материал изделия.
    }
    class Block : Products
    {
        public int weightOfProduct = 2;
        public int lengthOfProduct = 50;
        public string materialOfProduct = "Дерево";
    }
    class Armature : Products
    {
        public int weightOfProduct = 4;
        public int lengthOfProduct = 200;
        public string materialOfProduct = "Сталь";
    }
    class Nail : Products
    {
        public int weightOfProduct = 1;
        public int lengthOfProduct = 25;
        public string materialOfProduct = "Сталь";
    }


Но я не знаю как дальше передавать строковую переменную "Брусок" или "Арматура" или "Гвоздь" и получать обратно значения переменных соответствующие этой строковой переменной.

P.P.S. Я к строительству не имею никакого отношения. Пример выдуманный.
  • Вопрос задан
  • 181 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
JohnnyGat
@JohnnyGat
Стараюсь писать код, понятный человеку.
Класс изделия (раз уж вы хотите использовать get и set - делайте это правильно):
/// <summary>
    /// Изделие.
    /// </summary>
    class Product
    {
        private int _weight; // Вес изделия в килограммах.
        private int _length; // Длина изделия в сантиметрах.
        private string _material; // Материал изделия.

        /// <summary>
        /// Вес изделия в килограммах.
        /// </summary>
        public int Weight
        {
            get
            {
                return _weight;
            }
            set
            {
                _weight = value;
            }
        }

        /// <summary>
        /// Длина изделия в сантиметрах.
        /// </summary>
        public int Length
        {
            get
            {
                return _length;
            }
            set
            {
                _length = value;
            }
        }

        /// <summary>
        /// Длина изделия в сантиметрах.
        /// </summary>
        public string Material
        {
            get
            {
                return _material;
            }
            set
            {
                _material = value;
            }
        }

        /// <summary>
        /// Конструктор класса.
        /// </summary>
        public Product(int weight, int length, string material)
        {
            _weight = weight;
            _length = length;
            _material = material;
        }
    }


Заполнение списка изделий:
Dictionary<string, Product> products = new Dictionary<string, Product>();
products.Add("Брусок", new Product(2, 50, "Дерево"));
products.Add("Арматура", new Product(4, 200, "Сталь"));
products.Add("Гвоздь", new Product(1, 25, "Сталь"));


Получение параметров изделий:
string materialArmature = products["Арматура"].Material;
int blockLength = products["Брусок"].Length;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы