2010-04-27 15 views

risposta

10

Stai cercando uno strumento di refactoring del codice? In caso affermativo, check out ReSharper. Fornisce una semplice rotazione di semplici proprietà sul campo in proprietà automatiche e viceversa.

Se semplicemente non si vuole scrivere le proprietà dei campi-backed personalizzati, si può usare auto-properties, ad esempio FPOR, in questo modo:

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

che è equivalente a:

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

Si può anche fare l'accessibilità della differenza setter e getter:

public string MyProperty { get; private set; } 

Se si sceglie di utilizzare auto-proprietà, essere consapevoli del fatto che non si può accedere al campo sottostante, né è possibile fornire un'implementazione per solo una porzione (solo il getter o semplicemente il setter). Tuttavia, puoi rendere virtuale la proprietà.

+0

Niente come pubblicità gratuita. – QueueHammer

+1

ReSharper e CodeRush valgono la pena di evangelizzare. –

+3

Non proprio in questo caso, poiché Visual Studio ha incorporato il refactoring per promuovere i campi alle proprietà (fare clic con il tasto destro> Refactor> Encapsulate Field) –

2

Perché non stai facendo:

public int SomeProperty { get; set; } 

o

public int SomeOtherProperty { get; private set; } 

?

11

Se stai usando C# 3.0 o superiore (VisualStudio 2008, essenzialmente), è possibile utilizzare le proprietà auto. Anche se questo non è esattamente quello che stai chiedendo, dovrebbe (si spera) fare il trucco.

piuttosto che scrivere:

private string m_Name; 

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

si può semplicemente scrivere:

public string Name { get; set; } 

Questo vi darà veloci, le proprietà "muto" (vale a dire nessuna logica di recupero o assegnazione) che può andare sulla vostra classe. Se ritieni che sia necessario il recupero e la logica di assegnazione in un secondo momento, torna indietro e esegui la sintassi completa della dichiarazione di proprietà e non dovrai modificare alcun codice di chiamata.

L'unica vera differenza è che sarà necessario utilizzare la proprietà per ottenere il valore all'interno della classe, poiché la variabile di supporto viene generata e compilata e non disponibile per il codice.

18

Fare clic destro sulla dichiarazione campo, menù Refactor -> Incapsula campo e si va da

int n; 

a

int n; 

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

Non riesco a trovare "Incapsula" ... è solo una funzione Pro? – LightStriker

4

FYI, semplicemente digitando "prop" (senza virgolette) innesca una delle i frammenti che vengono con VS, e tu ti limiti a passare, l'opzione di gran lunga più veloce.

0

Probabilmente si dovrebbe usare Auto-Implemented properties in C# per la maggior parte delle cose.Tuttavia, se si desiderano proprietà 'vecchio stile' con campi di backing espliciti, è possibile creare uno snippet di codice di Visual Studio per renderli più facili da scrivere. This blog post ne ha un esempio.

0

possiamo creare rapidamente C Proprietà # in Visual Studio utilizzando prop scorciatoia e per conto di strumento di Visual Studio possiamo generare proprietà C# utilizzando uno strumento chiamato c# property generator..

quando la classe ha tante proprietà in esso, quando abbiamo creare un oggetto di quella classe, dobbiamo prendere certo dolore per assegnare le proprietà in modo da questo strumento consentirà di ridurre il dolore in qualche misura questo oggetto assegnerà automaticamente con proprietà ..

c# property assigner

Problemi correlati