Я создаю функцию синхронизации между устройством и сервером для большой базы данных. У меня много таблиц листинга (элементы в выпадающем списке/подборщике). Я не хочу писать много кода, и я ищу элегантное решение :)C# общая функция T, где T - строка
На устройстве в SQLite Я определил список таблицы как
public class NameTable : IBusinessEntity {
public int Id { get; set; } = 0;
public string Description { get; set; }
}
Когда я сохранить в базе данных а новая запись (элемент) Я называю эту функцию
public int SaveItem<T>(T item) where T : IBusinessEntity {
lock (locker) {
if (item.Id != 0) {
database.Update(item);
return item.Id;
}
else {
return database.Insert(item);
}
}
}
Теперь, когда устройство получает новую запись с сервера структура походит
public class SyncResult {
public int DeviceId { get; set; }
public int ServerId { get; set; }
public string TableName { get; set; }
public string Description { get; set; }
}
Затем я хочу сохранить (вставить новую запись, если DeviceId == 0 или обновить существующий элемент).
Мой вопрос: как я могу назвать SaveItem где T является TableName от SyncResult?
Заранее спасибо за любую помощь (я могу предложить пиво для этого!)
SaveItem
является членом MyDatabase
класса. В основном моя проблема заключается в том, как передать SaveItem<T>
T как строку.
Я не знаю, ясно ли я объяснил свою проблему.
Вы используете Entity Framework? –
Нет в этом случае. Это SQLite в Xamarin Forms – Enrico
Вы хотите, чтобы T была строкой? Почему бы просто не использовать строку? Это не должно быть общим, если вы ограничиваете его одним типом. – Krythic