我需要将实现相同接口(例如 IFoo)的不同数据对象转换为平面 DataTable。我当前的实现是创建一组IFoo
作为输入参数的函数,将 IFoo 转换为其类,然后返回一个 DataTable。
例如对于类Apple
我有以下功能:
public DataTable AppleToDataTable (IFoo obj)
{
Apple apl = obj as Apple;
// some conversion logic here.
}
对于课堂Orange
,我有类似的东西:
public DataTable OrangeToDataTable (IFoo obj)
{
Orange org = obj as Orange;
// some conversion logic here.
}
我用 adelegate
来指向这组函数。在我的配置 XML 文件中,我有一个键值对列表,将我的数据对象与转换器函数相关联(数据对象和转换器函数不是一对一的映射,即对于同一个数据对象,我可能想要将其转换成不同的DataTables。每个DataTable只包含部分数据)。
当我收到 aIFoo
时,它包含一个唯一的 id,它告诉我它是哪个数据对象,然后我使用配置文件中的映射将数据对象发送到正确的函数并获取 DataTable。
所以我的问题是:有没有更好的设计来完成这项任务?任何输入都受到高度赞赏。非常感谢你!