// La liste des valeurs à affecter aux champs SortedList<string, string> fieldValues = new SortedList<string,string>(); fieldValues.Add( "maVar", "test" ); // Récupère la liste des variables statiques non publiques de la classe Program FieldInfo[] staticFields = typeof( Program ).GetFields( BindingFlags.Static | BindingFlags.NonPublic ); // Parcourt la liste de variables foreach( FieldInfo field in staticFields ) { // Une valeur doit être affecté au champ if( fieldValues.ContainsKey( field.Name ) ) // Affecte la valeur field.SetValue( null, fieldValues[ field.Name ] ); }
// Affecte la valeur issue de la base de données à une variable de la classe Program private void SetValue( string varName, DataRow dataRow ) { FieldInfo field = typeof( Program ).GetField( varName, BindingFlags.NonPublic | BindingFlags.Static ); if( field == null ) throw new ArgumentException( "La variable '" + varName + "' n'est pas définie dans la classe Program" ); field.SetValue( null, dataRow[ varName ] ); } // Retourne un SqlParameter affecté de la valeur d'une variable d'après son nom private SqlParameter GetParameter( string varName ) { FieldInfo field = typeof( Program ).GetField( varName, BindingFlags.NonPublic | BindingFlags.Static ); if( field == null ) throw new ArgumentException( "La variable '" + varName + "' n'est pas définie dans la classe Program" ); SqlDbType dbType; switch( field.FieldType.FullName ) { case( "System.String" ) : dbType = SqlDbType.VarChar; break; case( "System.Int32" ) : dbType = SqlDbType.Int; break; case ("System.DateTime"): dbType = SqlDbType.DateTime; break; default : throw new ArgumentException( "Une variable de type '" + field.FieldType.FullName + "' ne peut pas être converti en SqlDbType" ); } SqlParameter parameter = new SqlParameter( varName, dbType ); parameter.Value = field.GetValue( null ); return parameter; }
// Récupération des valeurs pour la mise en base SqlParameter param1 = GetParameter( "maVar" ); SqlParameter param2 = GetParameter( "autreVar" ); SqlParameter param3 = GetParameter( "dateVar" ); // Mise à jour des valeurs depuis la base DataRow dbRow = dataSet.Tables[ 0 ].Rows[ 0 ]; SetValue( "maVar", dbRow ); SetValue( "autreVar", dbRow ); SetValue( "dateVar", dbRow );
static class Program { private static string maVar; private static int autreVar; private static DateTime dateVar; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question