我将如何使用这个 Factory class 有什么意义?
How would I use this Factory class and whats the point?
这是我第一次 post SO 并且我对 C# 非常陌生,因为我的大部分 IT 经验都是在数据库方面的。我开始查看我们的一些代码,并想了解我将如何使用此 class 及其方法以实现可重用性目的。
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()?
我一定错过了这种方法的重点。当我通常只创建多个数据表时,我将如何从这种方法中获益?
放轻松。这是我的第一个 post
谢谢
重点是获得强类型 class 而不是依赖硬编码字符串来获取数据,然后将所有内容转换为您期望的类型。相反,它从数据表中获取数据并将其转换为 "Dto"(数据传输对象),您可以在其中了解所有存在的属性(列)及其类型,因为它们已明确声明。没有猜测! :)
虽然此处给出的方法有效,但我希望它更多是为了遗留问题。直接创建这个 Dto class 比创建 Datatable 然后映射它更有效。
这是我第一次 post SO 并且我对 C# 非常陌生,因为我的大部分 IT 经验都是在数据库方面的。我开始查看我们的一些代码,并想了解我将如何使用此 class 及其方法以实现可重用性目的。
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()?
我一定错过了这种方法的重点。当我通常只创建多个数据表时,我将如何从这种方法中获益?
放轻松。这是我的第一个 post
谢谢
重点是获得强类型 class 而不是依赖硬编码字符串来获取数据,然后将所有内容转换为您期望的类型。相反,它从数据表中获取数据并将其转换为 "Dto"(数据传输对象),您可以在其中了解所有存在的属性(列)及其类型,因为它们已明确声明。没有猜测! :)
虽然此处给出的方法有效,但我希望它更多是为了遗留问题。直接创建这个 Dto class 比创建 Datatable 然后映射它更有效。