我有许多保存和检索数据对象的静态存储库类。我想为它们提供一些通用功能,所以我让它们继承自一个抽象类。
这不起作用,因为不允许继承静态类。我相信 .NET 设计,所以我会接受这是有充分理由的。
所以这让我相信我在这里有一些基本的设计问题。
我的问题是如何设计我的代码来实现我正在寻找的结果?或者,这只是必须在我的所有类中复制方法的问题。也许是单身人士?
静态回购:
public static class CreditMemos : InvoiceRepository<CreditMemo>
{
public static List<CreditMemo> GetByDocumentNumber(string documentNumber)
{
return CheckCache(
ConvertReaderToCreditMemos(
Invoices.GetByDocumentNumber<CreditMemo>(documentNumber)));
}
}
所需基础:
abstract class InvoiceRepository<t>
where t: DataObjects.Invoice
{
static List<t> invoiceCache = new List<t>();
static protected List<t> CheckCache(List<t> results)
{
foreach (var result in results)
if (!invoiceCache.Any(p => p.ID == result.ID))
invoiceCache.Add(result);
return invoiceCache.Where(p => results.Any(a => a.ID == p.ID)).ToList();
}
}