как бороться с тем, что при написании перегружаемых функций приходится много довольствоваться 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 >>
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 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, 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 >>
R>вариант
Это не вариант, а стандартный вариант.
... << RSDN@Home 1.1.0 stable >>