перегрузка функций и copy/paste
От: oRover Украина  
Дата: 05.01.04 16:42
Оценка: :))
как бороться с тем, что при написании перегружаемых функций приходится много довольствоваться copy/paste, что потом создает сложности в модернизации. Конечно, можно написать функцию, в которой будут общие куски, но часто слишком много параметров либо объектов надо передавать ей, что овчинка не стоит выделки.

вот только что столкнулся с той же проблемой.
Reflection на НЕТ:

        public static SqlCommand GenerateCommand(ref SqlConnection conn, MethodInfo method, object[] values)
        {
            SqlCommand cmd = new SqlCommand(method.Name, conn);
            cmd.CommandType = CommandType.StoredProcedure;
            ParameterInfo[] parameters = method.GetParameters();
            for (int i=0; i<parameters.Length; i++)
            {
                SqlParameter sqlParameter = new SqlParameter();
                sqlParameter.ParameterName = "@" + parameters[i].Name;
                sqlParameter.Value = values[i];
                cmd.Parameters.Add(sqlParameter);
            }

            return cmd;
        }

        public static SqlCommand GenerateCommand(ref SqlConnection conn, MethodInfo method, object[] values, string sp_name)
        {
            SqlCommand cmd = new SqlCommand(sp_name, conn);
            cmd.CommandType = CommandType.StoredProcedure;
            ParameterInfo[] parameters = method.GetParameters();
            for (int i=0; i<parameters.Length; i++)
            {
                SqlParameter sqlParameter = new SqlParameter();
                sqlParameter.ParameterName = "@" + parameters[i].Name;
                sqlParameter.Value = values[i];
                cmd.Parameters.Add(sqlParameter);
            }

            return cmd;
        }


отличаются только тем, что в одной явно передано имя сторедпроцедуры, а в другой — по имени метода. А сколько copy/paste...
... << RSDN@Home 1.1.0 stable >>
Re: перегрузка функций и copy/paste
От: Sergey Россия  
Дата: 05.01.04 16:48
Оценка: +1
Hello, oRover!
You wrote on Mon, 05 Jan 2004 16:42:04 GMT:

o>
 o>   public static SqlCommand GenerateCommand(ref SqlConnection conn,
 o> MethodInfo method, object[] values)  {
 o>    SqlCommand cmd = new SqlCommand(method.Name, conn);
 o>    cmd.CommandType = CommandType.StoredProcedure;
 o>    ParameterInfo[] parameters = method.GetParameters();
 o>    for (int i=0; i<parameters.Length; i++)
 o>    {
 o>     SqlParameter sqlParameter = new SqlParameter();
 o>     sqlParameter.ParameterName = "@" + parameters[i].Name;
 o>     sqlParameter.Value = values[i];
 o>     cmd.Parameters.Add(sqlParameter);
 o>    }

 o>    return cmd;
 o>   }

 o>   public static SqlCommand GenerateCommand(ref SqlConnection conn,
 o> MethodInfo method, object[] values, string sp_name)  {
 o>    SqlCommand cmd = new SqlCommand(sp_name, conn);
 o>    cmd.CommandType = CommandType.StoredProcedure;
 o>    ParameterInfo[] parameters = method.GetParameters();
 o>    for (int i=0; i<parameters.Length; i++)
 o>    {
 o>     SqlParameter sqlParameter = new SqlParameter();
 o>     sqlParameter.ParameterName = "@" + parameters[i].Name;
 o>     sqlParameter.Value = values[i];
 o>     cmd.Parameters.Add(sqlParameter);
 o>    }

 o>    return cmd;
 o>   }
 o>


o> отличаются только тем, что в одной явно передано имя сторедпроцедуры, а

o> в другой — по имени метода. А сколько copy/paste...

А почему бы вместо первой процедуры не написать:

  public static SqlCommand GenerateCommand(ref SqlConnection conn, MethodInfo method, object[] values)
  {
    return GenerateCommand(conn, method, values, method.Name);
  }


Best regards,
Sergey.
Posted via RSDN NNTP Server 1.8 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[2]: перегрузка функций и copy/paste
От: oRover Украина  
Дата: 05.01.04 16:50
Оценка: 1 (1)
Здравствуйте, Sergey, Вы писали:
>А почему бы вместо первой процедуры не написать:

S>
S>  public static SqlCommand GenerateCommand(ref SqlConnection conn, MethodInfo method, object[] values)
S>  {
S>    return GenerateCommand(conn, method, values, method.Name);
S>  }
S>


вариант

S>Best regards,

S> Sergey.
... << RSDN@Home 1.1.0 stable >>
Re[3]: перегрузка функций и copy/paste
От: mihailik Украина  
Дата: 10.01.04 09:21
Оценка:
R>вариант

Это не вариант, а стандартный вариант.
... << RSDN@Home 1.1.0 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.