将数据对象转换为数据表的最佳设计

本文关键字:最佳 数据表 数据 对象 转换 | 更新日期: 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)
    {
    }
}

恕我直言,这是更简洁的转换方式。