Форматирование буквальных параметров фрагмента кода C # - PullRequest
30 голосов
/ 03 октября 2008

Можно ли как-нибудь изменить способ рендеринга литерала фрагмента кода, когда он используется в коде, который генерирует фрагмент?

В частности, я хотел бы знать, могу ли я иметь литерал с именем скажем, $ PropertyName $, а затем заставить механизм фрагмента рендерить "_ $ PropertyName $, где первый символ сделан строчными.

Я не могу позволить себе R #. Пожалуйста, помогите:)

Ответы [ 3 ]

21 голосов
/ 03 октября 2008

К сожалению, похоже, нет пути. Фрагменты предлагают удивительно ограниченную поддержку функций преобразования , как вы можете видеть.

Вы должны придерживаться стандартного решения VS, которое заключается в написании двух литералов: один для имени свойства, а другой для имени переменной члена.

5 голосов
/ 17 августа 2013

«исправить» может быть использование префикса в именовании или переменной-члене, т.е.

string m_$name$;
string $name$
{
 get{return m_$name$;}
 set{m_$name$=value;}
};
3 голосов
/ 13 декабря 2017

Вы можете ввести верхнюю первую букву, затем имя свойства, затем нижнюю первую букву. Попробуйте этот фрагмент:

<?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>
...