2009-05-31 9 views
0

Wie unten Codes verkapseln (i refoctoring müssen)Wie kapselt man eine Liste mit Klasseneigenschaft?

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; } } 
}

i unter diese Klasse verwendet

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); 
           }

i so brauchen:

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; 

     }

Antwort

1

(I don verstehe nicht, wie sich die ersten beiden Beispiele auf die dritte beziehen ... sie nicht scheint nichts zu teilen

Also was bricht gerade? Das größte Problem, das ich sehen kann, ist, dass (IIRC) zuverlässig verwendbar mit Session (mit verschiedenen Back-End-Implementierungen) das Element serialisierbar sein muss (var BinaryFormatter), aber das kann so einfach wie die Markierung mycollection mit [Serializable] sein.

Für Informationen mycollection ist ein verwirrender Name für etwas, das eine Reihe Einheit, nicht die tatsächliche Sammlung - und wenn Sie C# 3.0 haben könnten Sie die Dinge ein wenig mit automattically implementiert Eigenschaften vereinfachen:

[Serializable] 
public class SomeSensibleName 
{ 
    public DateTime Tarih {get;set;} 
    public int Sira {get;set;} 
    public int VisitCount {get;set;} 
} 

Jedoch; Es ist nicht klar (aus deinem Code), ob dies etwas ändern wird. Bitte können Sie klären, was gerade passiert?

+0

Sehr nützliche Informationen +1 – ichiban

1

Wenn ich richtig verstehe, ist dies die 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 (VS2008) ausgeführt werden müssen, um arbeiten .

+0

Das ist, was ich von der Frage auch +1 verstanden – ichiban

Verwandte Themen