Visual Studio:是否可以定义自定义函数以在自己的代码片段中使用?

时间:2010-02-15 14:07:25

标签: visual-studio function code-snippets

我想编写一个Visual Studio片段,它允许我快速创建一个表格类:

public SomeClass
{
    public SomeType SomeProperty { get; private set; }
    public SomeClass(SomeType someProperty) { SomeProperty = someProperty; }
}

我希望构造函数上的参数与属性具有相同的名称,但是低级的。我不想两次输入名称。我该怎么做?

我已经查看过XML的片段,我发现可以使用某些函数。例如,内置的“switch”代码段包含以下指令:

<Function>GenerateSwitchCases($expression$)</Function>

根据this MSDN documentation page,您可以在此<Function>标记中使用三种内置函数。不幸的是,他们都没有做我想要的(小写第一个字母)。是否可以定义一个我可以在我的代码片段中使用的函数?

2 个答案:

答案 0 :(得分:5)

今天在Visual Studio中无法做到这一点。片段函数的定义和执行由C#语言服务直接控制。它目前不是一个可扩展点。不过,它正在考虑该产品的未来版本。

答案 1 :(得分:-3)

查看这篇文章,了解如何创建一个代码片段,该代码片段定义可以多次使用且只需键入一次的变量:http://www.switchonthecode.com/tutorials/csharp-tutorial-visual-studio-code-snippets

<Snippet>
  <Declarations>
    <Literal>
      <ID>startTime</ID>
      <ToolTip>Beginning Time Variable</ToolTip>
      <Default>startTime</Default>
    </Literal>
    <Literal>
      <ID>message</ID>
      <ToolTip>Replace This With Your Description</ToolTip>
      <Default>My function</Default>
    </Literal>
    <Literal Editable="false">
      <ID>DiagnosticsDebug</ID>
      <Function>
        SimpleTypeName(global::System.Diagnostics.Debug)
      </Function>
    </Literal>
  </Declarations>
  <Code Language="CSharp">
    <![CDATA[
   long $startTime$ = Environment.TickCount;
   $selected$ $end$
   $DiagnosticsDebug$.WriteLine(String.Format(
       "$message$ took {0} ticks.", Environment.TickCount - $startTime$));
   ]]>
  </Code>
</Snippet>