Как герметизировать список, который имеет класс свойство?
Вопрос
<Р> Как герметизировать ниже кодов (нужно 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;
}
Нет правильного решения
Другие советы
<Р> (я не в полной мере понять, как первые два примера относятся к третьей ... они, похоже, не разделяют ничего общего)
<Р> Итак, что в настоящее время ломается? Самая большая проблема, которую я вижу в том, что (IIRC) должно быть надежно может использоваться с
Session
(с различными конечными реализациями назад) элемент должен быть сериализации (вар 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;}
}
<Р> Тем не менее; не понятно (из кода), будет ли это что-либо изменить. Пожалуйста, вы можете выяснить, что происходит в настоящее время?
<Р> Если я правильно понимаю, это рефакторинга вы ищете:
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). Не связан с StackOverflow