Я играю с Sqlite и Attributes, и в моем коде есть свойства, которые выглядят так:
const string FooKey = "foo";
...
string m_foo;
[DatabaseColumn (FooKey)]
public string Foo {
get { return m_foo; }
set {
if (m_foo == value)
return;
m_foo = value;
OnFooChanged (); // Calls the event FooChanged after a null check
Update (FooKey, Foo); // Updates the field in the database
}
}
Это идентично для каждого свойства, которое соответствует столбцу в таблице, с единственными изменениями, являющимися именем и типом. Т.е., может быть другое свойство, подобное этому:
const string BarKey = "bar";
...
bool m_bar;
[DatabaseColumn (BarKey)]
public bool Bar {
get { return m_bar; }
set {
if (m_bar == value)
return;
m_bar = value;
OnBarChanged (); // Calls the event BarChanged after a null check
Update (BarKey, Bar); // Updates the field in the database
}
}
Прямо сейчас я использую только атрибут DatabaseColumn, чтобы определить, какие поля соответствуют столбцам в таблице, чтобы легче было вставить всю строку в базу данных. Можно ли как-то возложить на это ответственность DatabaseColumn, чтобы уменьшить шаблон в моем коде?