【问题标题】:Get current namepace on Snippet获取 Snippet 上的当前命名空间
【发布时间】:2012-02-12 02:14:18
【问题描述】:

我想在我的 sn-p 上注入当前的命名空间。 有人有什么想法可以帮助我吗?

ClassName 函数返回包含插入的sn-p 的类的名称。命名空间有什么东西吗?

谢谢, 法比恩

片段示例:

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

【问题讨论】:

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


    【解决方案1】:

    最后我选择使用宏来调用我的 sn-p 并在其上注入命名空间。

    调用sn-p:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多