【问题标题】:C# Custom Code Snippet FunctionsC# 自定义代码片段函数
【发布时间】:2011-08-05 12:50:10
【问题描述】:

我有一个像这样的代码 sn-p 结构:

    private $type$ $lowercaseName$;
    public $type$ $uppercaseName$
    {
        get { return $lowercaseName$; }
        set { $lowercaseName$ = value; }
    }

它会生成如下内容:

    private string randomValue;
    public string RandomValue
    {
        get { return randomValue; }
        set { randomValue = value; }
    }

那是一个非常简单的版本...它确实要复杂得多...而且要输入的信息要多得多。如果您可以输入$uppercaseName$,然后再输入一个自定义的sn-就好了p 函数将赋值给$lowercaseName$....

但是甚至可以编写自定义的 sn-p 函数吗?我在documentation 中没有看到任何关于此的内容...

如果可能的话……怎么做?

【问题讨论】:

  • 我希望这是可能的...... AFAIK,它不是。
  • 在VS2017中封装字段可以将小写转大写,但是我没搞清楚怎么弄..

标签: visual-studio-2010 code-snippets


【解决方案1】:

目前还不可能。请参阅被拒绝的 2010 年建议。

http://connect.microsoft.com/VisualStudio/feedback/details/523601/allow-custom-code-snippet-functions

这个功能好像是在引入sn-ps的时候被推荐的,每个版本都被重新推荐过,被打下来说时间不够了。

【讨论】:

    【解决方案2】:

    我没有使用camelCase 字段和PascalCase 属性的约定,而是采用了使用前导下划线作为支持字段的约定。以下代码 sn-p 对我有用。

    public $type$ $property$
    {
        get { return _$property$;}
        set { _$property$ = value;}
    }
    private $type$ _$property$;
    $end$
    

    为了冷落“下划线是前缀,前缀不好”的圣战,我相信它更像是一种约定,而不是前缀,很像属性 v. 参数的大写字母和小写字母。在其相关属性实现之外使用带有前导下划线的字段应该是代码异味。

    【讨论】:

      【解决方案3】:

      我的答案是 Resharper。实时模板。

      这个限制很烦人,但像许多其他 Visual Studio 限制一样,Resharper 解决了这个问题。它是一个性能消耗者,所以我在关闭代码分析的情况下进行操作。速度是可以接受的,实时模板可以节省大量时间。

      还有大约 20 个其他充分的理由让您拥有像 Resharper 这样的工具来让您成为出色的编码员。

      没有 Resharper 我不能再写“hello world”了……没有 Reflector 我不能调试它 =P

      另外,转到扩展管理器并单击在线图库。在搜索框中输入“sn-p”,那里有一些工具看起来可能会免费提供帮助:)。扩展库是纯粹的生产力黄金。

      【讨论】:

        【解决方案4】:

        我还使用并推荐对属性的私有变量使用 _ 前缀。有时我希望 Microsoft 允许对属性内的私有变量进行范围限定,如下所示,以防止访问属性外。

        public string RandomValue
        {
            private string randomValue;
            get { return randomValue; }
            set { randomValue = value; }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-12
          • 1970-01-01
          • 1970-01-01
          • 2011-12-06
          • 2010-09-08
          • 2015-03-27
          相关资源
          最近更新 更多