Хочу написать метод, в который будет передаваться экземпляр класса и название таблицы и в зависимости от этих параметров будет формироваться запрос на добавление записи в БД к выбранной таблице.
Есть класс Parent от которого наследуются классы tb и new_table. В классе CRUD есть заголовок метода добавления в БД Add:
public static bool Add(Parent instance, string tableName)
В этот метод кладется как параметр экземпляр класса tb или new_table. Например так:
tb c = new tb("", textBox1.Text);
CRUD.Add(c, "tb");
При попытке обратиться внутри метода к полям экземпляра класса tb под названием instance их просто не видно.
В классе Parent нет ничего, даже полей и в программе он нужен только для того, чтобы положить экземпляры разных классов как параметр функции.
Реализация класса tb:
public class tb : Parent
{
private string _id;
private string _name;
public string Id { get => _id; set => _id = value; }
public string Name { get => _name; set => _name = value; }
public tb(string id, string name)
{
Id = id;
Name = name;
}
}
Прошу подсказать:
1. Есть ли возможность как-то обратиться к полям наследуемого класса внутри метода?
2. Если такой возможности нет, то есть ли возможность передавать в метод разные экземпляры класса и что в таком случае должно быть в типе данных у экземпляра класса?
P.S. Вроде нашел способ обратиться к полям экземпляра класса через GetType().GetFields(), однако полученные поля в виде переменной объявленной через var никак не могу привести к типу лист или массив, поэтому бросил эту затею.
P.P.S Если не один из предложенных мной вариантов не является ответом на мой вопрос, то подскажите, куда следует копать. Думаю, что кто-нибудь уж точно задумывался над тем, чтобы реализовать что-то подобное, чтобы не писать для каждого класса отдельные CRUD-функционал. Если я не ошибаюсь, то нечто подобное есть в библиотеке для SQLite и там тоже есть единый метод Add, где нужно передать экземпляр класса и название таблицы.
Буду благодарен любой информации, спасибо