public void MontaParametro(ref DbCommand prCmd,Pessoa prPessoa)
{
// instancia Sql como default
DbParameter parametro = new SqlParameter();
string identificador = "";
//loop do reflection pegando cada propriedade da classe que foi passada e também da classe pai Pessoa
foreach (PropertyInfo pi in prPessoa.GetType().GetProperties())
{
//Verificação do tipo de command (no caso do OracleCommand é necessário adicionar a referência ao System.Data.OracleClient
if (prCmd.GetType() == typeof(SqlCommand))
{
identificador = "@";
parametro = new SqlParameter();
}
else if (prCmd.GetType() == typeof(OracleCommand))
{
identificador = ":";
parametro = new OracleParameter();
}
else if (prCmd.GetType() == typeof(OleDbCommand))
{
identificador = "?";
parametro = new OleDbParameter();
}
parametro.Value = pi.GetValue(prPessoa,null);
parametro.ParameterName = identificador + pi.Name;
prCmd.Parameters.Add(parametro);
}
}
// Domingos Carreira De Paola