[英]How to encapsulate list that has class property?
如何封裝以下代碼(我需要反演)
public class mycollection
{
private DateTime tarih;
private int sira;
private int visitingcount;
public DateTime TARIH { get { return tarih; } set { tarih = value; } }
public int SIRA { get { return sira; } set { sira = value; } }
public int VISITINGCOUNT { get { return visitingcount; } set { visitingcount = value; } }
}
我在下面用這個課
DataRow[] rows = dsChart.Tables[0].Select("TARIH>='" + DateGap1 + "' and TARIH<='" + DateGap2 + "'");
list = new List<mycollection>();
foreach (DataRow dr in rows)
{
mycollection mycol = new mycollection();
mycol.TARIH = Convert.ToDateTime(dr["TARIH"].ToString());
mycol.SIRA = Convert.ToInt32(dr["SIRA"].ToString());
mycol.VISITINGCOUNT = Convert.ToInt32(dr["VISITINGCOUNT"].ToString());
list.Add(mycol);
}
我需要這樣:
public static void LoadDepartman(string departmanName)
{
List<StuffDepartman> li = new List<StuffDepartman>();
GetDepartman departman = new GetDepartman();
DataSet ds = departman.GetDepartmanA(departmanName);
foreach (DataRow dr in ds.Tables[0].Rows)
{
li.Add(new StuffDepartman
{
Name = dr["Name"].ToString(),
SurName = dr["SurName"].ToString(),
Address = dr["Address"].ToString(),
Phone = dr["Phone"].ToString(),
DepartmanName = dr["DepartmanName"].ToString(),
Salary =int.Parse( dr["Salary"].ToString()),
Married = dr["Married"].ToString()
}
);
}
HttpContext.Current.Session["Stuffs"] = li;
}
(我不完全理解前兩個示例與第三個示例的關系……它們似乎沒有任何共同點)
那么當前發生了什么? 我看到的最大問題是(IIRC)要與Session
可靠地使用(具有不同的后端實現),該項目必須可序列化(var BinaryFormatter
),但這可能很簡單, mycollection
用[Serializable]
標記mycollection
一樣簡單。
對於信息, mycollection
是行實體而不是實際集合的名稱的一個令人困惑的名稱-如果您具有C#3.0,則可以使用自動實現的屬性來簡化一些操作:
[Serializable]
public class SomeSensibleName
{
public DateTime Tarih {get;set;}
public int Sira {get;set;}
public int VisitCount {get;set;}
}
然而; 從您的代碼尚不清楚這是否會改變任何東西。 請您能說明目前發生了什么嗎?
如果我正確理解,這就是您要尋找的重構:
DataRow[] rows = dsChart.Tables[0].Select("TARIH >='" + DateGap1 + "' and TARIH <='" + DateGap2 + "'");
List<mycollection> list = new List<mycollection>();
foreach (DataRow dr in rows)
{
list.Add(new mycollection
{
TARIH = Convert.ToDateTime(dr["TARIH"].ToString());
SIRA = Convert.ToInt32(dr["SIRA"].ToString());
VISITINGCOUNT = Convert.ToInt32(dr["VISITINGCOUNT"].ToString());
});
}
請記住,為了使其正常工作,您需要運行.NET Framework 3.x(VS2008)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.