簡體   English   中英

我將如何使用這個 Factory 類,有什么意義?

[英]How would I use this Factory class and whats the point?

這是我第一次在 SO 上發帖,我對 C# 非常陌生,因為我在數據庫方面擁有大部分 IT 經驗。 我開始查看我們的一些代碼,並想了解我將如何使用此類及其方法來實現可重用性目的。

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()?

我一定是錯過了這種方法的重點。 當我通常只創建多個數據表時,我將如何從這種方法中受益?

放輕松。 這是我的第一篇文章🙂

謝謝

這樣做的重點是獲得一個強類型的類,而不是依靠硬編碼的字符串來獲取數據,然后將所有內容轉換為您期望的類型。 相反,它從數據表中獲取數據並將其轉換為“Dto”(數據傳輸對象),您可以在其中了解所有存在的屬性(列)及其類型,因為它們是顯式聲明的。 沒有猜測! :)

雖然這里給出的方法有效,但我希望它更多是為了遺留問題。 直接創建這個 Dto 類比創建一個 Datatable 然后映射它更有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM