Я создаю приложение, которое будет работать с SQLite, и сейчас я хочу получить строки для создания таблиц для каждой сущности, которые должны храниться с кодом, подобным следующему:
table_creation_string1 = Book.GetTableCreationString();
table_creation_string2 = Scroll.GetTableCreationString();
, который будетПозвольте мне выполнить минимальную работу с созданием новых сущностей с использованием пользовательских атрибутов для хранения имен таблиц и имен полей.
Вот мой пример настройки:
[System.AttributeUsage(System.AttributeTargets.Class)]
public class DBItemAttribute : System.Attribute
{
public string TableName;
public DBItemAttribute(string table_name)
{
TableName = table_name;
}
}
internal abstract class DBItem
{
...
}
[DBItemAttribute("book_table")]
internal class Book : DBItem
{
...
}
[DBItemAttribute("scroll_table")]
internal class Scroll : DBItem
{
...
}
Проблема, с которой я столкнулся, заключается в том, что яне может получить значение атрибута для классов Book и Scroll без создания объекта.Другими словами - используя что-то вроде этого:
string table1 = Scroll.GetTableName();
string table2 = Book.GetTableName();
с выводом следующих значений
"scroll_table"
"book_table"
Так что я ищу лучшие решения для этого или несколько хороших альтернатив.
Я уже узнал, что статический метод в базовом классе не будет работать для этого, потому что, кажется, невозможно получить информацию о производном классе, вызывающую статический метод, определенный в base.
UPD:код вроде
table_creation_string1 = new Book().GetTableCreationString();
работает наверняка, но мне интересно, можно ли это сделать так, как я описал выше.