2012-01-17 50 views
3

我想在我的代碼片段中注入當前命名空間。 有沒有人有想法幫助我?在代碼片段上獲取當前命名空間

類名函數返回包含插入代碼段的類的名稱。有一些名稱空間?

感謝, 法比安斯基

片段樣本:

<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> 

預期的結果: 「TheCurrentNamepace.OfMyClass」 「MyClassName」

+0

$ namespacename $? – MattDavey 2012-01-17 09:59:38

+0

不幸的是:( – 2012-01-17 10:26:15

回答

1

最後我選擇使用宏來叫我的片段,並注入命名空間。

呼叫片段:

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 

獲得命名空間:

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