获取 Snippet 上的当前命名空间

3
我希望将当前命名空间注入到我的代码片段中。 有人能帮忙提供思路吗? ClassName 函数返回包含插入的代码片段的类的名称。是否有类似于命名空间的函数?
谢谢, Fabien
代码片段示例:
    <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>

预期结果: "MyClassName" 的当前命名空间为 "TheCurrentNamepace.OfMyClass"。
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接