Как инкапсулировать список, который имеет свойство класса?

StackOverflow https://stackoverflow.com/questions/931649

  •  06-09-2019
  •  | 
  •  

Вопрос

Как инкапсулировать приведенные ниже коды (мне нужна переориентация)

    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 это сбивающее с толку название для чего-то, что является объект строки, а не фактическая коллекция - и если у вас есть 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 с атрибуция
Не связан с StackOverflow
scroll top