2010-11-26 17 views
0

bien, disons que j'ai le suivant instruction if:directives d'exécution dans config

if (a) 
    { 
     // do something. 
    } 

est-il possible d'exécuter l'instruction que si une certaine valeur dans le app.config est vrai sans faire une autre si l'emballage? C'est comme faire une directive #if de préprocesseur, mais pas pour le pré-traitement mais pour l'exécution.

Y at-il une telle chose? une directive JIT ou quelque chose comme ça?

Répondre

0
if (ConfigurationManager.AppSettings["condition"] == "true" && a) 
{ 
    // do something. 
} 
0

Pour la propreté et la préférence de la personne, je toujours abstraire le contrôle de configuration dans une propriété en lecture seule:

private bool A 
{ 
    get 
    { 
     return ConfigurationManager.AppSettings["condition"] == "true" && a; 
    } 
} 

alors votre déclaration devient:

if (A) 
{ 
    //do something. 
} 

A est horrible nom, mais vous avez l'idée. ConfigurationManager est l'API recommandée pour l'obtention des paramètres de configuration. Les paramètres de configuration sont recommandés pour modifier le comportement d'exécution.

+0

J'ai manqué un détail important - ce code fait partie d'une méthode qui est lancée environ 10 fois par seconde. Je ne veux pas que l'instruction if soit exécutée à chaque fois que la méthode est déclenchée. existe-t-il une autre façon d'exécuter un morceau de code en fonction d'une valeur de configuration de configuration, sans avoir à le vérifier à chaque fois? – Dimor

+1

Quel est le problème de vérifier à chaque fois? Pour citer MSDN: «Pour certaines sections telles que appSettings et connectionStrings, utilisez les classes AppSettings et ConnectionStrings Ces membres effectuent des opérations en lecture seule, utilisent une seule instance mise en cache de la configuration et sont multithread aware. Ce n'est pas vraiment la lecture du fichier à chaque fois, si c'est ce que vous voulez éviter. La vérification du cache de configuration in memory dans une instruction if ne va pas causer de problème de performance. –