Visual Studio 2017在生成属性时避免使用Lambda

时间:2017-07-02 20:59:24

标签: c# visual-studio-2017

说我在课堂上有私人领域。如果我告诉Visual Studio使用属性封装字段,它会为get和set访问器输出lambda表达式。

namespace MyNamespace 
{
  public class MyClass
  {  
    private bool isActive;

    //Auto-Generated Property
    public bool IsActive
    {
      get => isActive;
      set => isActive = value;
    }
  }
}

但我宁愿每个访问者都有一对括号。

namespace MyNamespace 
{
  public class MyClass
  {  
    private bool isActive;

    //Auto-Generated Property
    public bool IsActive
    {
      get 
      {
        return isActive;
      }
      set 
      {
        isActive = value;
      }
    }
  }
}

如何更改行为?我知道这里的片段存在: " C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC#\ Snippets \ 1033 \ Refactoring" 但我无法弄清楚如何改变它们以获得我想要的行为。

1 个答案:

答案 0 :(得分:0)

这就是我想要的 - 支持快捷方式。有趣的是,如果您已经拥有一个私有字段,Visual Studio会生成一个公共属性,其具有与您从头开始时的不同(较新)语法。

Shortcut to create properties in Visual Studio?

我使用此代码段创建自己的代码片段,在其中我创建了一个带有支持字段的公共属性。但是使用公共属性我添加了一个RaisedPropertyChanged()方法调用,因为我正在使用WPF进行MVVM,我想使用这个快捷方式在ObservableObjects上轻松创建属性。我的问题并不清楚我的最终目标是什么。

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>obsprop</Title>
            <Shortcut>obsprop</Shortcut>
            <Description>Code snippet for property and backing field for observable object</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>type</ID>
                    <ToolTip>Property type</ToolTip>
                    <Default>string</Default>
                </Literal>
                <Literal>
                    <ID>property</ID>
                    <ToolTip>Property name</ToolTip>
                    <Default>MyProperty</Default>
                </Literal>
                <Literal>
                    <ID>field</ID>
                    <ToolTip>The variable backing this property</ToolTip>
                    <Default>myVar</Default>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[private $type$ $field$;
    public $type$ $property$
    {
        get { return $field$;}
        set 
        { 
            $field$ = value;
            RaisePropertyChanged();
        }
    }
    $end$]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>