我将如何使用此Factory类,有什么用?

问题描述 投票:0回答:1

[这是我有史以来第一篇SO文章,对于C#来说,这是我的新手,我拥有大多数的数据库经验。我开始看一些我们的代码,并想了解如何将此类及其方法用于可重用性。

public class FileCreator
{
    public string Territory { get; set; }
    public string CV { get; set; }
    public string AdDate { get; set; }
    public string Category { get; set; }
    public string Advertiser { get; set; }
    public string Brand { get; set; }
    public decimal SumOfSpend { get; set; }
    public decimal SumOfVolume { get; set; }
    public string Spots { get; set; }
    public string PageNumber { get; set; }

    internal static List<FileCreator> Create(DataSet data)
    {
        var result = new List<FileCreator>();

        if (data.Tables.Count > 0)
        {
            result = Create(data.Tables[0]);
        }

        return result;
    }

    public static List<FileCreator> Create(DataTable dataTable)
    {
        var result = new List<FileCreator>();

        foreach (DataRow row in dataTable.Rows)
        {
            result.Add(Create(row));
        }

        return result;
    }

    private static FileCreator Create(DataRow row)
    {
        var fileCreator = new FileCreator();

        fileCreator.Territory = (row["Territory"].ToString());
        fileCreator.CV = row["CV"].ToString();
        fileCreator.AdDate = row["Ad_date"].ToString();
        fileCreator.Category = row["Category"].ToString();
        fileCreator.Advertiser = row["Advertiser"].ToString();
        fileCreator.Brand = row["Brand"].ToString();
        fileCreator.SumOfSpend = Convert.ToDecimal(row["SumOfSpend"].ToString());
        fileCreator.SumOfVolume = Convert.ToDecimal(row["SumOfVolume"].ToString());
        fileCreator.Spots = row["Spots"].ToString();
        fileCreator.PageNumber = row["Page Number"].ToString();

        return fileCreator;
    }
}

为什么不只是创建数据表的新实例,即var dt = new Datatable()?

我必须错过这种方法的重点。通常只创建多个数据表时,如何从这种方法中受益?

轻松点。这是我的第一篇文章🙂

谢谢

c# class methods factory factory-pattern
1个回答
0
投票

重点是获得一个强类型的类,而不是依赖于硬编码的字符串来获取数据,然后将所有内容强制转换为所需的类型。相反,它从数据表中获取数据并将其转换为“ Dto”(数据传输对象),在这里您知道存在的所有属性(列)及其类型,因为它们已明确声明。没有猜测! :)

虽然此处给出的方法可行,但我希望它更多是出于传统的考虑。直接创建此Dto类而不是创建Datatable然后再映射它,效率更高。

© www.soinside.com 2019 - 2024. All rights reserved.