将数据对象转换为数据表的最佳设计
本文关键字:最佳 数据表 数据 对象 转换 | 更新日期: 2023-09-27 18:12:07
我需要将实现相同接口(例如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.
}
我使用delegate
来指向这组函数。在我的配置XML文件中,我有一个键值对列表,它将我的数据对象与转换函数关联起来(数据对象和转换函数不是一对一的映射,即对于相同的数据对象,我可能希望将其转换为不同的datatable)。每个DataTable只包含数据的一部分。
当我收到IFoo
时,它包含一个唯一的id,它告诉我它是哪个数据对象,然后我使用配置文件中的映射将数据对象发送到正确的函数并获得DataTable。
所以我的问题是:有没有更好的设计来完成这项任务?任何输入都是高度赞赏的。非常感谢!
看起来你在这里没有问题。我不认为你的设计有什么缺点,除了你把转换映射分开了。
另一种方法是使用策略模式(重载)。例如:public class Converter
{
public DataTable Convert(Apple obj)
{
}
public DataTable Convert(Orange obj)
{
}
public DataTable Convert(Mango obj)
{
}
public DataTable Convert(Avocado obj)
{
}
}
恕我直言,这是更简洁的转换方式。