Как правильно составить базу на большое количество объектов со свойствами? - C#
Формулировка задачи:
В общем, такая задачка была у меня, составить некую базу. Около 100 объектов, у каждого объекта ровно 30 свойств.
При обращении к объекту, например, из ListBox-а, на форму выводилась информация по всем 30 свойствам (Все значения свойств - текстовые). Так же к каждому объекту надо было привязать несколько изображений. вот...
Занимаюсь я программированием не так давно, и, недолго думая, замутил такую фигню через Массив... Сейчас пересмотрел код и задумался, мне кажется, что это какое-то извращение и нужно сделать по-другому... сейчас выглядит примерно так:
И так далее, пока не заполню все свойства всем объектам. Потом обращаюсь к ним из листБокса
Для изображений создал массив image[,] - так же в котором первый индекс - сам объект, второй - конкретное изображение, таким образом имея int переменную со значением индекса, я могу сразу вывести все нужные мне данные из обоих массивов.
Я начал думать, что если перевести все это в Классы, но решил посоветоваться сначала.. И как это иожно будет подобным образом выводить и обращаться к ним?
string[, ] obj = new string[100, 30];
obj[0, 0] = "type";
obj[0, 1] = "name";
obj[0, 2] = "orange";
obj[0, 3] = "metal";
obj[0, 4] = "48305";
obj[0, 5] = "1205";
obj[0, 6] = "1977";
obj[0, 7] = "0";
obj[0, 8] = "2391";
obj[0, 9] = "55";
//Решение задачи: «Как правильно составить базу на большое количество объектов со свойствами?»
textual
Листинг программы
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataList dataList;
private void Form1_Load(object sender, EventArgs e)
{
dataList = new DataList(); //объект класса с коллекцией
dataList.list.Add(new Data(1, "Иванов", 20)); //заполняем коллекцию
dataList.list.Add(new Data(2, "Петров", 24));
dataList.list.Add(new Data(3, "Сидоров", 30));
dataList.list.Add(new Data(4, "Парамонов", 21));
dataList.list.Add(new Data(5, "Решетов", 37));
listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged); //подключаем обработчик изменения индекса
listBox1.DisplayMember = "FIO"; //отображаемое свойство
listBox1.ValueMember = "ID"; //значимое свойство
listBox1.DataSource = dataList.list; //коллекцию в листбокс
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int id = int.Parse(listBox1.SelectedValue.ToString()); //получаем id выбранного объекта
Data data = dataList.list.Where(x => x.ID == id).ToList()[0]; //ищем объект в коллекции
textBox1.Text = data.ID.ToString(); //значения полей объекта в текстбоксы
textBox2.Text = data.FIO;
textBox3.Text = data.Age.ToString();
}
}
class Data //класс данных с открытыми полями
{
public int ID { set; get; }
public string FIO { set; get; }
public int Age { set; get; }
public Data(int id, string fio, int age)
{
ID = id;
FIO = fio;
Age = age;
}
}
class DataList
{
public List<Data> list { set; get; } //класс с коллекцией
public DataList()
{
list = new List<Data>();
}
}