Wie Liste verkapseln, die Klasse Eigenschaft hat?
Frage
Wie unten Codes (Ich brauche refoctoring)
einzukapseln 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; } }
}
Ich habe diese Klasse unter
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);
}
Ich brauche wie folgt aus:
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;
}
Keine korrekte Lösung
Andere Tipps
(ich verstehe nicht ganz, wie die ersten beiden Beispiele auf den dritten beziehen ... sie scheinen nicht etwas gemeinsam zu teilen)
Also, was zur Zeit bricht? Das größte Problem, das ich sehe, ist, dass (IIRC) zu sein zuverlässig verwendbar mit Session
(mit verschiedenen Back-End-Implementierungen) das Einzelteil muss serialisierbar sein (var BinaryFormatter
), aber das kann so einfach sein wie Markierung mycollection
mit [Serializable]
.
Für Informationen mycollection
ist ein verwirrender Name für etwas, das eine ist Zeile Einheit , nicht die tatsächliche Sammlung - und wenn Sie C 3.0 # Sie konnten die Dinge ein wenig vereinfachen mit automattically implementiert Eigenschaften:
[Serializable]
public class SomeSensibleName
{
public DateTime Tarih {get;set;}
public int Sira {get;set;}
public int VisitCount {get;set;}
}
Allerdings; es ist nicht klar (aus dem Code), ob das irgendetwas ändern wird. Bitte können Sie klären, was zur Zeit geschieht?
Wenn ich richtig verstehe, dann ist dies das Refactoring Sie suchen:
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());
});
}
Beachten Sie, dass für diese, um Sie .NET Framework 3.x ausgeführt werden müssen, arbeiten (VS2008).