У меня есть серия классов, которые делают почти то же самое.Вот как выглядят 2 из предполагаемых дочерних классов:
class ItemWriter
{
private List<Item> items;
public ItemWriter(List<Item> items)
{
this.items= items;
}
public List<Item> Write()
{
using (var ctx = new DatabaseEntities())
{
using(var trx = ctx.Database.BeginTransaction())
{
ctx.Item.AddRange(items);
rowsAdded = ctx.SaveChanges();
trx.Commit();
}
}
return items;
}
}
И еще ...
class ItemShelfWriter
{
private List<ItemShelf> itemShelfs;
public ItemShelfWriter(List<ItemShelf> itemShelfs)
{
this.itemShelfs= itemShelfs;
}
public List<ItemShelf> Write()
{
using (var ctx = new DatabaseEntities())
{
using(var trx = ctx.Database.BeginTransaction())
{
ctx.TtemShelf.AddRange(itemShelfs);
ctx.SaveChanges();
trx.Commit();
}
}
return itemShelfs;
}
}
Вы можете видеть, что оба класса делают почти одно и то же - только они пишут вразные таблицы и методы Write()
имеют разные типы возвращаемых значений.
Я хотел бы иметь интерфейс / абстрактный класс IWriter.cs
, который заставляет каждый дочерний класс иметь метод Write (), возвращающий тип иконструктор, принимающий список.Если бы я мог удалить некоторое дублирование кода в Write (), это было бы хорошо.
Однако проблема в том, что каждый класс принимает и возвращает разные объекты и записывает их в разные таблицы базы данных.Есть ли способ, которым я могу достичь / улучшить это?Я смутно понимаю, что, вероятно, нужно использовать дженерики.