代码之家  ›  专栏  ›  技术社区  ›  Michael Lang

格式化C代码段的文本参数

  •  30
  • Michael Lang  · 技术社区  · 17 年前

    在代码片段生成的代码中使用它时,是否有任何方法可以更改代码片段的文本呈现方式?

    具体来说,我想知道是否可以有一个名为$propertyname$的文本,然后让代码段引擎呈现“$propertyname$其中第一个字符是小写的。

    我买不起R。请帮助:

    3 回复  |  直到 8 年前
        1
  •  21
  •   Michael Lang    10 年前

    不幸的是,似乎没有办法。代码片段对 transformation functions 正如你所看到的。

    您必须坚持使用VS标准解决方案,即编写两个文本:一个用于属性名,另一个用于成员变量名。

        2
  •  4
  •   fred    12 年前

    “fix”可以是在命名或成员变量中使用前缀,即:

    string m_$name$;
    string $name$
    {
     get{return m_$name$;}
     set{m_$name$=value;}
    };
    
        3
  •  1
  •   Nikolay Makhonin    8 年前

    您可以输入一个大写的第一个字母,然后输入一个属性名,然后输入一个小写的第一个字母。尝试此代码段:

    <?xml version="1.0" encoding="utf-8"?>
    <CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
      <Header>
        <Title>Notifiable Property</Title>
        <Author>Nikolay Makhonin</Author>
        <Shortcut>propn</Shortcut>
        <Description>Property With in Built Property Changed method implementation.</Description>
        <SnippetTypes>
          <SnippetType>SurroundsWith</SnippetType>
          <SnippetType>Expansion</SnippetType>
        </SnippetTypes>
      </Header>
      <Snippet>
        <Declarations>
            <Literal>
                <ID>Type</ID>
                <Default>Type</Default>
            </Literal>
            <Literal>
                <ID>P</ID>
                <Default>P</Default>
            </Literal>
            <Literal>
                <ID>roperty</ID>
                <Default>ropertyName</Default>
            </Literal>
            <Literal>
                <ID>p</ID>
                <Default>p</Default>
            </Literal>
            <Literal>
                <ID>Ownerclass</ID>
                <ToolTip>The owning class of this Property.</ToolTip>
                <Function>ClassName()</Function>
                <Default>Ownerclass</Default>
            </Literal>
        </Declarations>
        <Code Language="CSharp">
          <![CDATA[#region $P$$roperty$
    
            private Field<$Type$> _$p$$roperty$;
            public static readonly string $P$$roperty$PropertyName = GetPropertyName(() => (($Ownerclass$)null).$P$$roperty$);
            public $Type$ $P$$roperty$
            {
                get { return _$p$$roperty$; }
                set { Set(ref _$p$$roperty$, value); }
            }
    
            #endregion
    
    ]]>
        </Code>
      </Snippet>
    </CodeSnippet>