获取Snippet上的当前名称空间

时间:2012-01-17 08:53:26

标签: c# visual-studio-2010 namespaces code-snippets

我想在我的代码段上注入当前的名称空间。 有没有人有想法帮助我?

ClassName 函数返回包含已插入片段的类的名称。名称空间有什么东西吗?

谢谢, 法比安

摘录示例:

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

1 个答案:

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