2010-04-27 13 views

Odpowiedz

10

Szukasz narzędzia do refaktoryzacji kodu? Jeśli tak, to check out ReSharper. Zapewnia łatwe przekształcanie prostych właściwości pola z powrotem w właściwości automatyczne i na odwrót.

Jeśli po prostu nie chce pisać niestandardowe właściwości pola oparciem, można użyć auto-properties, fpor przykład, tak:

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

co jest równoważne:

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

Możesz nawet uzyskać dostęp do ustawiacza i różnicy gettera:

public string MyProperty { get; private set; } 

Jeśli zdecydujesz się użyć auto-właściwości, pamiętaj, że nie możesz uzyskać dostępu do podstawowego pola, ani nie możesz dostarczyć implementacji tylko dla jednej części (tylko pobierający lub tylko ustawiający). Możesz jednak uczynić właściwość wirtualną.

+0

Nic nie przypomina darmowej reklamy. – QueueHammer

+1

ReSharper i CodeRush są warte ewangelizacji. –

+3

Niezupełnie w tym przypadku, ponieważ Visual Studio wbudowało refaktoryzację w celu promowania pól do właściwości (prawy klik> Refactor> Encapsulate Field) –

2

Dlaczego nie robisz:

public int SomeProperty { get; set; } 

lub

public int SomeOtherProperty { get; private set; } 

?

11

Jeśli używasz języka C# 3.0 lub nowszego (VisualStudio 2008, zasadniczo), możesz użyć właściwości automatycznych. Chociaż nie jest to dokładnie to, o co prosisz, powinno (miejmy nadzieję) załatwić sprawę.

Zamiast piśmie:

private string m_Name; 

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

można po prostu napisać:

public string Name { get; set; } 

To daje szybkie, „głupi” (czyli bez pobierania lub cesja Logic) właściwości, które mogą iść na swoje klasa. Jeśli okaże się, że potrzebujesz później logiki pobierania i przypisywania, po prostu wróć i wypełnij pełną składnię deklaracji właściwości, a nie będziesz musiał zmieniać żadnego kodu wywołującego.

Jedyną różnicą jest to, że będziesz musiał użyć właściwości, aby uzyskać wartość w klasie, ponieważ generowana jest zmienna pomocnicza, a czas kompilacji jest niedostępny dla kodu.

18

Kliknij prawym przyciskiem myszy na deklaracji pola, menu Refactor -> Kapsułkować pole i przejść od

int n; 

do

int n; 

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

Nie mogę znaleźć "Encapsulate" ... czy jest to tylko funkcja Pro? – LightStriker

4

FYI, po prostu wpisując "prop" (bez cudzysłowów) uruchamia jeden z fragmenty, które są dostarczane z VS, a ty po prostu przechodzisz przez, zdecydowanie najkrótszą opcją.

0

Prawdopodobnie powinieneś używać Auto-Implemented properties w C# dla większości rzeczy.Jeśli jednak chcesz użyć właściwości "starego stylu" z jawnymi polami pomocniczymi, możesz utworzyć fragment kodu programu Visual Studio, aby ułatwić pisanie. This blog post ma przykład jednego.

0

możemy szybko utworzyć C# właściwości w visual studio przy użyciu rekwizyt skrótu i imieniu wizualnego narzędzia studio możemy wygenerować C# właściwości za pomocą narzędzia o nazwie c# property generator..

gdy klasa ma tak wiele właściwości w nim, kiedy utworzyć obiekt tej klasy, musimy podjąć pewną ból przypisać właściwości więc narzędzie to będzie zmniejszyć ból w pewnym stopniu ten obiekt będzie automatycznie przypisywać o właściwościach ..

c# property assigner

Powiązane problemy