Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Réflexion

ou introspection...

    7 mars 2012 à 20:20:17

    Bonsoir,

    Je galère sur un sujet de C# :

    Créez un projet de test de type MSTest. Toute la série de questions doit y être entièrement réalisée.
    Créez un fichier App.config et définissez deux paires clé/valeur :
    <add key="path" value="bin\debug" /> <!-- insérez à la place de bin\debug votre chemin vers le fichier file -->
    <add key="file" value="Unknown.dll" />
    Dans une method de test, lisez par réflexion la bibliothèque Unknown.dll (fournie) en utilisant une classe du framework permettant de récupérer le contenu du fichier App.config. Récupérez la classe qui implémente l’interface IDisposable, trouvez son constructeur et instanciez-la.

    J'ai fouillé un peu ici pour essayer de récupérer les infos de la classe :
    http://emerica.developpez.com/dotnet/r [...] ction/csharp/

    Je ne suis pas familier du tout avec les MSTest...

    J'ai des soucis au niveau du App.config. Voici ce que je met dedans :

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <add key="path" value="bin\debug" />
      <!-- insérez à la place de bin\debug votre chemin vers le fichier file -->
      <add key="file" value="Unknown.dll" />
    </configuration>
    


    Erreur :
    Section de configuration non reconnue add. (C:\Users\peyo\Documents\Visual Studio 2010\Projects\Reflexion\Reflexion\bin\Debug\Reflexion.DLL.config line 3).


    Quelqu'un peu me briefer un poil sur les fichiers de config d'un projet, la réflexion et les MSTest ?

    Thx !

    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2012 à 21:09:53

      En bref (parce qu'on ne fera pas ton devoir à ta place) :

      - les couples clés/valeurs sont à placer dans une section <appsettings> du fichier de config ;
      - pour lire ces valeurs, utilise la classe ConfigurationManager;
      - pour charger la dll dont tu auras récupéré le chemin d'accès, utilise la méthode Assembly.Load() ;
      - pour trouver la classe qui implémente IDisposable, utilise la méthode GetTypes() de l'assembly, et prend le premier type tel que type.IsAssignableFrom(typeof(IDisposable)) ;
      - pour créer une instance de ce type, utilise la classe Activator.
      • Partager sur Facebook
      • Partager sur Twitter
        7 mars 2012 à 21:45:34

        aaaah impec, je te remercie (une fois encore :lol: )

        Tu pourrais m'aider de la même manière pour la suite ?
        • Partager sur Facebook
        • Partager sur Twitter
          7 mars 2012 à 22:36:09

          Commence toujours par essayer de mettre tout ça ensemble en t'aidant de la doc et de google, et puis on verra :)
          • Partager sur Facebook
          • Partager sur Twitter
            7 mars 2012 à 23:07:04

            En fait je voulais dire, pour la suite de mon exo =)

            J'ai réussi à faire tout ce que tu m'as indiqué dans ton premier post, il y a juste l'activator que j'entrave pas complètement donc => msdn powa.

            La suite demande de récupérer les exceptions levées dans l'appel du constructeur. Chaque exception doit être attrapée dans un catch spécifique au type (4 types sont attendus dont un étant lui-même susceptible de contenir une exception interne).
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              7 mars 2012 à 23:21:20

              Regarde la doc de Activator.CreateInstance, section "Exceptions".
              • Partager sur Facebook
              • Partager sur Twitter

              [C#] Réflexion

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown