3

我经常写这样的 ac# 代码:

    void func(object myObject)
    {
        if (myObject == null)
        {
            throw new ArgumentNullException("myObject");
        }
        ...

如何在 Visual Studio 2012 中为该类型的代码编写一个自动完成功能,这样我就不必一直输入这个?

4

3 回答 3

9

由于没有兴趣,我将通过发布我自己的解决方案来结束这个问题。将以下文件放入C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC#\Snippets\1033\Visual C#\ifn.snippet将起到作用:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
        <Title>ifn</Title>
        <Shortcut>ifn</Shortcut>
        <Description>Code snippet for if (arg==null)</Description>
        <Author>sam green</Author>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>
        <Declarations>
            <Literal>
                <ID>argument</ID>
                <Default>arg</Default>
                <ToolTip>Argument</ToolTip>
            </Literal>
        </Declarations>
        <Code Language="csharp"><![CDATA[if ($argument$ == null)
        {
                    throw new ArgumentException("$argument$");
        }$end$]]>
        </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>
于 2013-10-14T15:00:33.980 回答
1

我使用自动生成并猜测我想要的参数的关键字“argnull”为此定义了一个 ReSharper 快捷方式。我认为它与您的解决方案的效果大致相同,尽管您不需要处理 XML 或放置文件的位置。

这是 ReSharper VB.NET 方法的示例:

if $VAR$ is nothing then
  throw new ArgumentNullException("$VAR$")
end if
于 2013-10-28T14:41:13.277 回答
0

为了改进@galet的答案,这是我的:

  • 使用简洁的单行if() throw;语句。
  • 使用更精确ArgumentNullException的而不是ArgumentException.
  • 用于nameof()避免使用魔法字符串(因此可以与 Refactor-Renames 完美配合)。
  • 使用(更安全的)is null运算符
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
        <Title>ifn</Title>
        <Shortcut>ifn</Shortcut>
        <Description>Code snippet for if (arg==null)</Description>
        <Author>https://stackoverflow.com/questions/18905475</Author>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>
        <Declarations>
            <Literal>
                <ID>argument</ID>
                <Default>arg</Default>
                <ToolTip>Argument</ToolTip>
            </Literal>
        </Declarations>
        <Code Language="csharp"><![CDATA[if( $argument$ is null ) throw new ArgumentNullException( nameof($argument$) );$end$]]>
        </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>
于 2020-01-23T08:14:57.673 回答