You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:42:08