none
declarer une constante avec la valuer d'une variable c# RRS feed

  • Question

  • Bonjour, je suis débutant en c#
    mon problème est que je veux déclarer une constante avec la valeur d'une variable récupérée d'un fichier de config.
    je m'explique: j'ai un fichier de config ou j'ai declaré une clé ( key v, value)  et je veux declarer une constante c dans mon programme avec comme valeur le value de v,

    const int c = configurationManager.Appsettings["v"]

    le probleme c'est que c pas possible de faire ca directement puisque on peut pas initialiser une constante avec la valeur d'une variable!
    j'ai merai savoir s'il y a moyen pour permettre ca (une methode speciale, un passage par pointeur ou reference  ect)

    merci beaucoup d'avance pour votre aide
    mardi 16 mars 2010 09:58

Réponses

  •  

    Bonjour,

     

    Une solution serait de créer votre classe avec CodeDOM pendant l’exécution du programme, ou de créer une classe et puis d’essayer d’ajouter une variable membre pendant l’exécution.

    Voici la documentation pour ce sujet :

     

    http://msdn.microsoft.com/fr-fr/library/650ax5cx.aspx
     

    Ou une solution plus efficace mais moins élégante serait d’avoir un script qui modifie directement le fichier source, appelle le compilateur pour générer l’exécutable et démarre l’application.

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    • Marqué comme réponse Alex Petrescu vendredi 19 mars 2010 10:08
    mercredi 17 mars 2010 14:12

Toutes les réponses

  • Bonjour,

    plutot que d'utiliser le mot clé const, tu peux déclarer la variable avec static readonly ce qui te permettra de l'initialiser à l'exécution :

    public static readonly string MyString = configurationManager.Appsettings["v"]

    Cordialement
    mardi 16 mars 2010 10:25
    Modérateur
  • merci beaucoup pour votre reponse mais je dois vraiment declarer une constante puisque cette constante sera utilisée pour definir le nombre d'execution de mon test unitaire nunit , je m'explique encore, ce que je veux avoir c'est

    // dans mon code
    const int c = configurationManager.Appsettings["v"]
     
      ...

    [Test]
    [Nunit.Framework.Extensions.Repeat(c)]

    le truc c'est que l'attribut Repeat ne prend en parametre que des constantes , j'ai essayé avec le readonly mais ca marche pas !
    cordialement
    mardi 16 mars 2010 10:34
  • bonjour,
    c qui est certain c qu' avec une constante sa valeur ne pourra pas être modifié après compilation puisque ca valeur  est affectée définitivement à la compilation alors que la Readonly elle le sera à l' exécution. et pourra donc recevoir une valeur non modifiable en m^m tmps que sa déclaration
    mardi 16 mars 2010 21:00
  •  

    Bonjour,

     

    Une solution serait de créer votre classe avec CodeDOM pendant l’exécution du programme, ou de créer une classe et puis d’essayer d’ajouter une variable membre pendant l’exécution.

    Voici la documentation pour ce sujet :

     

    http://msdn.microsoft.com/fr-fr/library/650ax5cx.aspx
     

    Ou une solution plus efficace mais moins élégante serait d’avoir un script qui modifie directement le fichier source, appelle le compilateur pour générer l’exécutable et démarre l’application.

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    • Marqué comme réponse Alex Petrescu vendredi 19 mars 2010 10:08
    mercredi 17 mars 2010 14:12
  • Bonjour,

    Merci bcp pour vos réponses ca m'a beaucoup aidé !

    cordialement

    lundi 22 mars 2010 12:13