2015-10-20 1 views
0

Je suis en train d'analyser le code source du projet C# via COM EnvDTE COM de VisualStudio. La tâche souhaitée consiste à:EnvDTE code de fonction d'analyse [plus]

  1. Recherchez CodeClass avec le prénom dans la structure du projet. [fait]
  2. Retrouvez toutes ses propriétés publiques {get; set;}. [done]
  3. Localisez son constructeur public (celui avec le nombre de paramètres correspondant au nombre de propriétés trouvées). [done]
  4. Essayez de faire correspondre les paramètres du constructeur avec les propriétés publiques. Cette étape repose sur certaines hypothèses:

    • Il devrait être un constructeur en suivant forme actuelle dans la classe:

      public ClassName(typeC paramC, TypeA paramA, typeB paramB...) 
      { 
          PropA = paramA; 
          PropC = paramC; 
          PropB = paramB; 
          ... 
      } 
      
    • Il devrait être que les affectations paramètre à-propriété directe comme PropA = paramA, rien de tel que propA = paramB + paramC est autorisé.

Dans le monde idéal, je voudrais reconnaître quel paramètre est attribué à quelle propriété sans hypothèses supplémentaires ou les métadonnées ajoutées à la classe source comme:

  • Il y a une règle pour le paramètre commande.
  • Il existe une règle pour l'ordre d'affectation.
  • Il existe une règle pour la convention de dénomination des paramètres/propriétés.
  • Il existe une règle pour les attributs supplémentaires associés aux propriétés.

La question est: pourrait-on analyser le corps du constructeur décrit par le EnvDTE?

J'ai déjà CodeFunction objet représentant ce constructeur identifié également sa collection de CodeParameter paramètres, mais je ne suis pas en mesure d'atteindre le code (pas sûr s'il est encore possible, mais le membre de l'énumération vsCMElement.vsCMElementAssignmentStmt me donne l'espoir qu'il pourrait être) ...

Répondre