2012-01-17 3 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

+0

불행히도 : ( –

답변

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 
관련 문제