【发布时间】:2019-10-10 23:42:51
【问题描述】:
我有一系列几乎做同样事情的课程。以下是 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() 方法返回一个类型和一个接受List 的构造函数。如果我可以删除 Write() 中的一些重复代码,那就太好了。
但是,问题在于每个类都接受并返回不同的对象并写入不同的数据库表。有什么方法可以实现/改进吗?我有一个模糊的理解,它可能是需要使用的泛型。
【问题讨论】:
标签: c# generics inheritance polymorphism