我想在我的代码段上注入当前的名称空间。 有没有人有想法帮助我?
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”
答案 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