编辑:这可以关闭。发现一个完全重复,似乎没有解决方案。 =(
完全重复: Formatting Literal parameters of a C# code snippet
编写代码段时有没有办法解析替换文字?我想做类似以下的事情:
<Literal>
<ID>PropertyName</ID>
</Literal>
用户使用&#39; MyProperty&#39;替换PropertyName。结果是这样的:
private object _myProperty;
public object MyProperty
{get;set;}
注意大小写。我需要一种方法来解析替换文字并对其进行操作。下划线是微不足道的,只是一个硬编码的问题。
这里有机会吗?
编辑;完整片段:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>MVVM Public Property</Title>
<Author>Michael Leide</Author>
<Description>Adds a public property with private backing and property changed event support.</Description>
<Shortcut>propvm</Shortcut>
</Header>
<Snippet>
<Declarations>
<Literal Editable="true">
<ID>PropertyType</ID>
<Default>object</Default>
</Literal>
<Literal Editable="true">
<ID>PropertyName</ID>
<Default>PropertyName</Default>
</Literal>
</Declarations>
<Code Language="csharp" Kind="" Delimiter="$">
<![CDATA[
$PropertyType$ _$PropertyName$;
public $PropertyType$ $PropertyName$ {
get {
if (_$PropertyName$ == null)
_$PropertyName$ = new $PropertyType$();
return _$PropertyName$;
} set {
_$PropertyName$ = value;
this.OnPropertyChanged("$PropertyName$");
} }
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
答案 0 :(得分:1)
很遗憾,您无法直接将PropertyName转换为propertyName。解决此问题的最佳方法是包含第三个文字来指定支持字段。这样可以防止当前文字中出现歧义,只会增加额外的几次击键次数。
声明块看起来像这样:
<Declarations>
<Literal Editable="true">
<ID>PropertyType</ID>
<Default>object</Default>
</Literal>
<Literal Editable="true">
<ID>PropertyName</ID>
<Default>PropertyName</Default>
</Literal>
<Literal Editable="true">
<ID>BackingPropertyField</ID>
<Default>backingPropertyField</Default>
</Literal>
</Declarations>
代码块变为:
public $PropertyType$ $PropertyName$ {
get {
if (_$BackingPropertyField$ == null)
_$BackingPropertyField$ = new $PropertyType$();
return _$BackingPropertyField$;
} set {
_$BackingPropertyField$ = value;
this.OnPropertyChanged("$PropertyName$");
} }
]]>
</Code>
然后,您可以选中并指定所需的名称。