2017-07-02 5 views
0

Angenommen, ich habe private Feld in einer Klasse. Wenn ich Visual Studio anrichte, das Feld mit einer Eigenschaft zu kapseln, gibt es Lambda-Ausdrücke für die get- und set-Accessoren aus.Visual Studio 2017 Vermeiden Sie Lambda beim Generieren von Eigenschaften

namespace MyNamespace 
{ 
    public class MyClass 
    { 
    private bool isActive; 

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

Aber ich hätte lieber ein Paar Klammern für jeden Accessor.

namespace MyNamespace 
{ 
    public class MyClass 
    { 
    private bool isActive; 

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

Wie kann ich das Verhalten ändern? Ich weiß, dass die Schnipsel existieren hier: "C: \ Programme (x86) \ Microsoft Visual Studio 14.0 \ VC# \ Snippets \ 1033 \ Refactoring" Aber ich kann nicht herausfinden, wie man sie ändert, um das Verhalten, das ich will .

+2

Dies sind keine Lambdas. Dies ist nur eine ausgefallene neue Syntax, um Getter und Setter von Eigenschaften zu deklarieren. Es ist gut. Du solltest es wollen. –

+2

Außer VS 2017 ist Version "15". Das sind die falschen Schnipsel. –

+0

Warum haben Sie ein privates Feld? Lassen Sie den Compiler die Arbeit machen :) – stuartd

Antwort

0

Das ist, was ich gesucht habe - die profull Abkürzung. Es ist interessant, dass Visual Studio, wenn Sie bereits über ein privates Feld verfügen, eine öffentliche Eigenschaft mit der anderen (neueren) Syntax generiert, als wenn Sie von Grund auf neu starten.

Shortcut to create properties in Visual Studio?

ich verwenden, um diesen Code-Snippet meinen eigenen Code-Schnipsel zu schaffen, wo ich eine öffentliche Eigenschaft mit Unterstützung Feld erstellen. Aber mit der öffentlichen Eigenschaft habe ich einen Aufruf der RaisedPropertyChanged() -Methode hinzugefügt, weil ich MVVM mit WPF mache, und ich möchte diese Verknüpfung verwenden, um einfach Eigenschaften auf ObservableObjects zu erstellen. Meine Frage war nicht klar, was mein ultimatives Ziel war.

<?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> 
Verwandte Themen