2012-01-17 4 views
3

Je souhaite injecter l'espace de nom actuel sur mon extrait. Est-ce que quelqu'un a une idée pour m'aider?Obtenir l'espace de nom actuel sur Snippet

Fonction ClassName La fonction renvoie le nom de la classe qui contient l'extrait inséré. Il y a quelque chose pour l'espace de noms?

Merci, Fabien

Snippet échantillon:

<Declarations> 
     <Literal default="true" Editable="false"> 
      <ID>classname</ID> 
      <ToolTip>Class name</ToolTip> 
      <Function>ClassName()</Function> 
      <Default>ClassNamePlaceholder</Default> 
     </Literal> 
     <Literal Editable="false"> 
      <ID>namespace</ID> 
      < ??? /> 
     </Literal> 
    </Declarations> 
    <Code Language="CSharp"> 
     <![CDATA[ 
      $namespace$ $classname$ 
     ]]> 
    </Code> 

résultat attendu: "TheCurrentNamepace.OfMyClass" "MyClassName"

+0

$ namespacename $? – MattDavey

+0

malheureusement pas :( –

Répondre

1

Enfin je choisis d'utiliser des macros pour appeler mon extrait et injecter le espace de noms sur elle.

extrait d'appel:

Sub InsertMySnippet() 
    DTE.ActiveDocument.Selection.Text = "mySnippetShortcut" 
    DTE.ExecuteCommand("Edit.InsertTab") 

    Dim selection As TextSelection = DTE.ActiveDocument.Selection 
    selection.Insert(GetNamespace()) 

    DTE.ExecuteCommand("Edit.InsertTab") 
End Sub 

espace de noms Obtenir:

Private Function GetNamespace() As String 
    Dim classInfo As CodeClass2 = GetClassElement() 
    Return classInfo.FullName 
End Function 

Private Function GetClassElement() As CodeClass2 
    Try 
     Dim selection As TextSelection = DTE.ActiveDocument.Selection 
     Dim fileCodeModel As FileCodeModel2 = DTE.ActiveDocument.ProjectItem.FileCodeModel 
     Dim element As CodeElement2 = fileCodeModel.CodeElementFromPoint(selection.TopPoint, vsCMElement.vsCMElementClass) 
     Return element 
    Catch 
     Return Nothing 
    End Try 
End Function 
Questions connexes