如何在Visual Studio 22代码片段中将属性名转为小写?
在VS 2022中实现线程安全属性代码片段的小写后缀字段/锁对象
VS 2022的代码片段支持对Literal变量应用内置转换函数,通过${LiteralID:ToLower()}语法可以将PropertyName转换为小写,再拼接_lock和_field后缀,同时修正原代码中私有字段定义在属性内部的语法错误,修改后的完整代码片段如下:
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>ThreadSafeProperty</Title> <Shortcut>propts</Shortcut> <Description>Creates a thread-safe property with a backing field and a lock object.</Description> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Code Language="csharp"><![CDATA[ private $Type$ ${PropertyName:ToLower()}_field; private object ${PropertyName:ToLower()}_lock = new object(); public $Type$ $PropertyName$ { get { lock (${PropertyName:ToLower()}_lock) { return ${PropertyName:ToLower()}_field; } } set { lock (${PropertyName:ToLower()}_lock) { SetField(ref ${PropertyName:ToLower()}_field, value, nameof($PropertyName$)); } } }]]> </Code> <Declarations> <Literal> <ID>PropertyName</ID> <ToolTip>Property Name</ToolTip> <Default>MyProperty</Default> </Literal> <Literal> <ID>Type</ID> <ToolTip>Property Type</ToolTip> <Default>int</Default> </Literal> </Declarations> </Snippet> </CodeSnippet> </CodeSnippets>
关键修改说明
- 使用
${PropertyName:ToLower()}_lock和${PropertyName:ToLower()}_field替代原有的$PropertyName$_lock和$PropertyName$_field,实现属性名转小写后拼接后缀 - 将私有字段移到属性外部,修正原代码的语法错误
使用方法:将上述XML保存为.snippet文件,导入到VS 2022的代码片段库中,输入快捷键propts即可生成符合要求的线程安全属性。
内容的提问来源于stack exchange,提问作者Dennis Christian
相关产品推荐
相关产品推荐

