2009-05-31 65 views
0

如何封裝下面的代碼(我需要refoctoring)如何封裝具有類屬性的列表?

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; 

     }

回答

1

(我不不完全理解前兩個例子與第三個例子的關係......他們不知道似乎沒有任何共同之處)

那麼目前打破了什麼?我可以看到的最大問題是(IIRC)可靠地可用於Session(具有不同的後端實現),該項目必須是可序列化的(var BinaryFormatter),但這可能與標記mycollection[Serializable]一樣簡單。

對於信息mycollection的東西是一個令人困惑的名稱是排實體,而不是實際的徵收 - 如果你有C#3.0,你可以簡化事情有點與automattically實現的屬性:

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

然而;它不清楚(從你的代碼)這是否會改變任何東西。請你能澄清目前發生的事情嗎?

+0

非常有用的信息+1 – ichiban 2009-06-03 10:17:23

1

如果我理解正確的,這是你正在尋找的重構:

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) 。

+0

這就是我所理解的問題+1 – ichiban 2009-06-03 10:16:56