Visual Studio 2005 - Rifattorizzare più attributi contemporaneamente?
-
02-07-2019 - |
Domanda
Uso il tasto destro > Refactor > Encapsultate field per avere il mio accessor ogni volta. Il problema è quando creo una nuova classe, posso avere più di 10 attributi ed è lungo fare 1 per 1 per ogni strumento di accesso. C'è un modo più veloce per crearli?
Grazie per il tuo tempo.
Soluzione
Se si crea una nuova classe, è possibile utilizzare frammenti di codice per creare campi incapsulati anziché prima creare il campo e quindi incapsularlo. In C #, le scorciatoie sono prop e propg (per set privato).
Altri suggerimenti
Sembra che il refactoring incorporato in studio supporti solo un singolo campo alla volta per il refactoring Encapsulate Field. Refactor Pro! ( http://www.devexpress.com/Products/Visual_Studio_Add-in/Refactoring/ ) o Resharper ( http://www.jetbrains.com/resharper/index. html ) entrambi supportano l'incapsulamento di più campi.
Potresti essere in grado di immaginarti e mettere insieme una macro che ti consenta di selezionare più campi e quindi incapsulare ciascuno, ma le macro VS non sono la mia palla di cera.
In C # 3.0, la nuova sintassi della proprietà ti salva la necessità di dichiarare il campo & amp; implementare gli accessori. La loro sintassi è simile a:
public string Name { get; private set; }
Inoltre, voglio sottolineare che per i membri interni, le proprietà insignificanti hanno un valore molto scarso sui campi interni, poiché hai il controllo sia del chiamante che dell'implementazione: puoi passare a una proprietà in futuro, senza molto lavoro .
Anche per i membri pubblici, pensare che puoi rendere il tuo codice a prova di futuro semplicemente facendo campi di dati pubblici nelle proprietà è miope. Per lo meno, dovresti aggiungere il riferimento indiretto al tuo costruttore (con una fabbrica) e alla tua interfaccia (con un'interfaccia). Richiede inoltre una profonda riflessione su come i consumatori della tua API si aspetteranno che tu lavori su più versioni. È davvero difficile e vale la pena farlo solo se sei un fornitore di API, a mio avviso.
Nel mio codice, il motivo principale per cui utilizzo le proprietà è perché molti strumenti che usano la riflessione guardano le proprietà ma non i campi. Penso che sia un errore, ma è così che funzionano gli strumenti.