2010-04-27 1 views

Antwort

10

Suchen Sie nach einem Code Refactoring Tool? Wenn ja, check out ReSharper. Es bietet eine einfache Umwandlung von einfachen Feldeigenschaften in Autoeigenschaften und umgekehrt.

Wenn Sie einfach nicht benutzerdefinierte Feld-backed Eigenschaften schreiben möchten, können Sieauto-properties, FPOR Beispiel verwenden, etwa so:

public string MyProperty { get; set; } // generates an auto-property 

das ist äquivalent zu:

private string m_MyProperty; 
public string MyProperty 
{ 
    get { return m_MyProperty; } 
    set { m_MyProperty = value; } 
} 

Sie können sogar die Erreichbarkeit des Setter- und Getter-Unterschieds herstellen:

public string MyProperty { get; private set; } 

Wenn Sie sich für automatische Eigenschaften entscheiden, beachten Sie, dass Sie weder auf das zugrunde liegende Feld zugreifen können noch eine Implementierung für nur einen Teil bereitstellen können (nur den Getter oder nur den Setter). Sie können die Eigenschaft jedoch virtuell machen.

+0

Nichts wie kostenlose Werbung. – QueueHammer

+1

ReSharper und CodeRush sind es wert, evangelisiert zu werden. –

+3

Nicht wirklich in diesem Fall, wie Visual Studio Refactoring für die Förderung von Feldern zu Eigenschaften eingebaut hat (Rechtsklick> Refactor> Encapsulate Field) –

2

Warum bist du nicht tun:

public int SomeProperty { get; set; } 

oder

public int SomeOtherProperty { get; private set; } 

?

11

Wenn Sie C# 3.0 oder höher (im Wesentlichen VisualStudio 2008) verwenden, können Sie die automatischen Eigenschaften verwenden. Während dies nicht genau das ist, was Sie verlangen, sollte es (hoffentlich) den Trick machen.

Anstatt Schreiben:

private string m_Name; 

public string Name 
{ 
    get { return m_Name; } 
    set { m_Name = value; } 
} 

Sie können einfach schreiben:

public string Name { get; set; } 

Diese Sie geben schnell, „dumme“ Eigenschaften (dh keine Retrieval oder Zuordnungslogik), die dann wiederum können Ihre Klasse. Wenn Sie später eine Abruf- und Zuweisungslogik benötigen, rufen Sie einfach die vollständige Deklaration der Eigenschaften auf, und Sie müssen den aufrufenden Code nicht ändern.

Der einzige wirkliche Unterschied ist, dass Sie die Eigenschaft verwenden müssen, um den Wert innerhalb Ihrer Klasse zu erhalten, da die Hintergrundvariable generiert und kompiliert und für Ihren Code nicht verfügbar ist.

18

Rechtsklick auf das Feld Erklärung, Menü Refactor -> kapseln Feld und Sie gehen von

int n; 

zu

int n; 

public int N 
{ 
    get { return n; } 
    set { n = value; } 
} 
+0

Ich kann "Encapsulate" nicht finden ... ist es nur eine Pro-Funktion? – LightStriker

4

FYI, einfach "Prop" (ohne Anführungszeichen) eingeben löst eine von die Snippets, die mit VS geliefert werden, und Sie nur durch den Tab, die bei weitem schnellste Option.

0

Sie sollten wahrscheinlich Auto-Implemented properties in C# für die meisten Dinge verwenden.Wenn Sie jedoch Eigenschaften im alten Stil mit expliziten Hintergrundfeldern möchten, können Sie ein Visual Studio-Code-Snippet erstellen, um das Schreiben zu vereinfachen. This blog post hat ein Beispiel von einem.

0

wir schnell C# Eigenschaften in Visual Studio mit prop Abkürzung und Namen von Visual Studio-Tool erstellen können wir C# Eigenschaften mit einem Werkzeug in ihm genannt erzeugen können c# property generator..

wenn Klasse so viele Eigenschaften, wenn wir erstellen Objekt dieser Klasse, wir bestimmte Schmerzen zu nehmen haben Eigenschaften zuweisen, so wird dieses Tool Ihre Schmerzen in gewissem Umfang reduziert dies wird mit Eigenschaften automatisch Objekt zuweisen ..

c# property assigner