目标
我需要以泛型接口的帮助,对每个单元格进行System.Data.DataTable
的注释,同时隐藏实现细节。
我尝试过的方法
我发现DataColumn
有一个ExtendedProperties
集合,可以在其中添加一些特定逻辑,但这些注释并不属于列或行。当然,DataRow
没有这样的数据包,我也不想为了一些注释而实现和测试整个DataTable
的派生类型。
目前的解决方案
由于数据表没有单元格的概念,只能通过DataRow
和DataColumn
访问单个值,因此我考虑从数据表中派生出一个工厂,使其成为工厂的工厂:
using System.Data;
class AnnotatedDataTable: DataTable, IFactory<DataRow, IFactory<DataColumn, IDataCellAnnotation>>
{
// ...
public IFactory<DataColumn, IDataCellAnnotation> Create(DataRow row)
{
return someAnnotationFactoryForTheGivenRow;
}
// ...
}
另一个选择是使用元组作为工厂的关键字,但我认为这只是隐藏了我在这种情况下的设计问题。
这真的让我困扰...在这种情况下,工厂似乎行不通。是否有任何想法,是否可以让工厂创建工厂?谢谢!