Если я набор бизнес-процессов, как это:Как вызвать метод, зная его подпись как строку?
- Награда
- отпуск
- курс
- Сверхурочная
И каждый процесс имеет Insert Method
как это:
public string InsertReward()
{
using (IfxConnection con = new IfxConnection(ConfigurationManager.ConnectionStrings["rr35"].ToString()))
{
int affectedRow = -1;
int req_serial = 0;
req_serial = GetMaxSerial(DateTime.Now.Year);
StringBuilder cmdTxt = new StringBuilder();
cmdTxt.Append(" INSERT INTO RewardProcess(gen_year,gen_ser,bonus_type,bonus_date,bonus_desc,main_code,year,emp_num,active_ser) VALUES (?,?,?,?,?,?,?,?,?) ");
using (var myIfxCmd = new IfxCommand(cmdTxt.ToString(), con))
{
myIfxCmd.CommandType = CommandType.Text;
myIfxCmd.Parameters.Add("gen_year", IfxType.Integer);
myIfxCmd.Parameters.Add("gen_ser", IfxType.Integer);
myIfxCmd.Parameters.Add("bonus_type", IfxType.SmallInt);
myIfxCmd.Parameters.Add("bonus_date", IfxType.Date);
myIfxCmd.Parameters.Add("bonus_desc", IfxType.NVarChar);
myIfxCmd.Parameters.Add("main_code", IfxType.Integer);
myIfxCmd.Parameters.Add("year", IfxType.Integer);
myIfxCmd.Parameters.Add("emp_num", IfxType.Integer);
myIfxCmd.Parameters.Add("active_ser", IfxType.SmallInt);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
myIfxCmd.Parameters[0].Value = ((object)Req_year) ?? DBNull.Value;
myIfxCmd.Parameters[1].Value = ((object)req_serial) ?? DBNull.Value;
myIfxCmd.Parameters[2].Value = ((object)Bonus_type) ?? DBNull.Value;
myIfxCmd.Parameters[3].Value = ((object)Bonus_date) ?? DBNull.Value;
myIfxCmd.Parameters[4].Value = ((object)Bonus_desc) ?? DBNull.Value;
myIfxCmd.Parameters[5].Value = ((object)Main_code) ?? DBNull.Value;
myIfxCmd.Parameters[6].Value = ((object)Year) ?? DBNull.Value;
myIfxCmd.Parameters[7].Value = ((object)Emp_num) ?? DBNull.Value;
myIfxCmd.Parameters[8].Value = ((object)Active_ser) ?? DBNull.Value;
affectedRow = myIfxCmd.ExecuteNonQuery();
}
con.Close();
con.Dispose();
if (affectedRow > 0)
{
return DateTime.Now.Year + "," + req_serial;
}
else if (affectedRow == 0)
{
return string.Empty;
}
else
{
return affectedRow.ToString();
}
}
}
И После введения бизнес-процесса, я вставить сделку с process ID
.
Теперь я хочу создать general method
(для всех процессов), этот метод проверит идентификатор процесса и вызовет его метод вставки, а после этого вызовет второй метод, касающийся метода транзакции. я хочу все это в одной транзакции, используя ambient transaction
Есть ли что-нибудь в .net, чтобы вызвать метод, зная его подпись как строку?
Void RootMethod(int processId)
{
using(TransactionScope scope = new TransactionScope())
{
//1-Detect the signature of the insertion method by process id then call it by passing the suitable filled object
//2-call transaction method
}
}
juste use Reflection http://stackoverflow.com/questions/540066/calling-a-function-from-a-string-in-c-sharp. Хотя я бы пошел только с методом «Insert()» и некоторым полиморфизмом –