...utilizzare una stringa come campo di un oggetto... Possibile?

martedì 30 ottobre 2007 - 15.02

Jax Profilo | Newbie


Ciao ragazzi, sto muovendo i miei primi passi ne mondo C#...
Ho perso tutta la mattina nel cercare un modo per automatizzare l'aggiunta dei parametri e la loro inizializzazione per le chiamate di stored procedure...

Vi posto il codice in questione...

public bool insert(Esempio obj) {
String property;
int start;

OleDbDataAdapter adapter = new OleDbDataAdapter();

objConn.Open();
OleDbTransaction tmpTrn = objConn.BeginTransaction(IsolationLevel.ReadCommitted);

// assegnazione dei valori da inserire
OleDbCommand command = new OleDbCommand("nome_stored_procedure", objConn, tmpTrn);
command.CommandType = CommandType.StoredProcedure;

Type myType = obj.GetType();
//FieldInfo[] myFieldInfoArray = myType.GetFields();
PropertyInfo[] myPropertyInfoArray = myType.GetProperties();

for (int i = 0; i < myPropertyInfoArray.Length; i++) {
property = myPropertyInfoArray[i].Name;
command.Parameters.Add("@" + property.ToUpper(), OleDbType.VarChar, 30);
command.Parameters["@" + property].Value = obj.?????**;
}
return true;
}

Al posto di "?????**" concettualmente vorrei mettere la stringa contenuta in "property", che corrisponde al nome campo dell'oggetto dal quale dovrei estrarre il valore per inizializzare il parametro della stored procedure.
Vedete commentato il FieldInfo, in quanto prendendo in considerazione solo i campi "public" non mi torna utile...
Ho provato mille strade, ma non sono ancora riuscito a trovare una soluzione accettabile...
Ho pensato anche di "eseguire" la stringa, ma a quanto ho capito dovrei crearmi una classe "di compilazione", ecc... Ma è un po' troppo macchinoso per quello che devo fare... Non ho bisogno di creare codice dinamico...
Un'altra idea era di scorrere l'oggetto obj come un vettore, avendo in posizone [0] il primo campo, in posizione[1] il secondo,..., ed estrarne i valori...
Ma non sono riuscito a trovare il modo di farlo

Riuscireste a darmi una mano per favore....?

Grazie mille!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5