Jak możemy generować metody pobierające i ustawiające w Visual Studio?


226

Pod pojęciem „generuj” rozumiem automatyczne generowanie kodu niezbędnego dla określonej wybranej (zestawu) zmiennych.

Ale wszelkie bardziej wyraźne objaśnienia lub komentarze dotyczące dobrych praktyk są mile widziane.

Odpowiedzi:



51

Program Visual Studio ma również funkcję, która wygeneruje właściwość ze zmiennej prywatnej.

Jeśli klikniesz zmienną prawym przyciskiem myszy, w wyskakującym menu kontekstowym kliknij pozycję „Refaktoryzuj”, a następnie wybierz opcję Encapsulate Field ... . Spowoduje to utworzenie właściwości getter / setter dla zmiennej.

Nie jestem wielkim fanem tej techniki, ponieważ jest to trochę niewygodne w użyciu, jeśli musisz utworzyć wiele pobierających / ustawiających, a to umieszcza właściwość bezpośrednio poniżej prywatnego pola, co mnie wkurza, ponieważ zwykle zgrupowałem wszystkie moje prywatne pola, a ta funkcja Visual Studio psuje formatowanie mojej klasy.


10
Niestety ta opcja nie jest dostępna w ekspresowych wersjach programu Visual Studio.
Toby

12
jest też shourtcut - wolę w ten sposób :) - CTRL + R + E
Vukasin

32

Używam Visual Studio 2013 Professional.

  • Umieść kursor na linii zmiennej instancji.

    Wpisz opis zdjęcia tutaj

  • Naciśnij kombinację klawiszy Ctrl+ R, Ctrl+ Elub kliknij prawy przycisk myszy. Wybierz menu kontekstowe RefaktoryzujObuduj pole ... , a następnie naciśnij OK.

    Wpisz opis zdjęcia tutaj

  • W oknie dialogowym Podgląd zmian zmian - Encapsulate Field naciśnij przycisk Apply.

    Wpisz opis zdjęcia tutaj

  • To wynik:

    Wpisz opis zdjęcia tutaj



Możesz także umieścić kursor, aby wybrać właściwość . Użyj menu EdytujRefaktoryzujObuduj pole ...


30

Przez generowanie masz na myśli generowanie automatyczne? Jeśli nie to masz na myśli:

Visual Studio 2008 ma najłatwiejszą implementację do tego:

public PropertyType PropertyName { get; set; }

W tle tworzy to domyślną zmienną instancji, w której twoja właściwość jest przechowywana i pobierana.

Jeśli jednak chcesz wprowadzić więcej logiki do swoich właściwości, będziesz musiał mieć dla niej zmienną instancji:

private PropertyType _property;

public PropertyType PropertyName
{
    get
    {
        //logic here 
        return _property;
    }
    set
    {
        //logic here
        _property = value;
    }
 }

Poprzednie wersje programu Visual Studio zawsze używały tej długiej metody.


Czy standardem w C # nie jest dolna myślnik po nazwie członka property_zamiast przed nim _property?
Julen

2
@Julen - Zawsze widziałem konwencję _property.
Nathan DeWitt

27

Możesz także użyć „propfull” i nacisnąć TABdwa razy.

Zmienna i właściwość z get i set zostaną wygenerowane.


jest to bardziej przydatne i zawsze o tym zapominam
Dave Alperovich,

Robię serializację XML i odradzam mnóstwo właściwości w całym programie. + 100 septillionów głosów, gdybym mógł. Dzięki! Edycja- JESZCZE LEPSZE, skrypt auto-klucza + ^ this = wydajność ponad 90000!
Eon


6

Jeśli używasz programu Visual Studio 2005 i nowszych wersji, możesz szybko utworzyć narzędzie ustawiające / pobierające za pomocą polecenia insert snippet.

Kliknij kod prawym przyciskiem myszy, kliknij polecenie Wstaw fragment ( Ctrl+ K, X), a następnie wybierz z listy „prop”.


4

Jeśli używasz ReSharper, przejdź do menu ReSharper → KodGeneruj ...

(Lub naciśnij Alt+ Inswewnątrz otaczającej klasy), a otrzymasz wszystkie opcje generowania pobieraczy i / lub ustawiaczy, o których możesz pomyśleć :-)


3

Użyj propfullsłowa kluczowego.

Wygeneruje właściwość i zmienną.

Wpisz słowo kluczowe propfullw edytorze, a następnie dwa TABs. Wygeneruje kod taki jak:

private data_type var_name;

public data_type var_name1{ get;set;}

Film pokazujący użycie fragmentu „propfull” (między innymi), przy 4 min 11 sek.


2
proszę podać więcej informacji o swojej odpowiedzi, odpowiedzi z krótkim opisem nie są odpowiednie dla następnych odwiedzających ...
Kiyarash

wpisz słowo kluczowe propfull w edytorze, wygeneruje kod taki jak prywatny typ danych nazwa_zmiennej; public data_type var_name1 {get; set;}
avinash kadu

Czy możesz dodać odniesienie do „propfull” ( edytując odpowiedź , a nie tutaj w komentarzach)?
Peter Mortensen,

3

Stworzyłem własny fragment, który tylko dodaje {get; set;}. Zrobiłem to tylko dlatego, że uważam propTabza niezdarnego.

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>get set</Title>
            <Shortcut>get</Shortcut>
        </Header>
        <Snippet>
            <Code Language="CSharp">
                <![CDATA[{get; set;}]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Dzięki temu wpisujesz swój PropType i PropName ręcznie, a następnie wpisz getTab, a to doda zestaw get. To nic magicznego, ale skoro i tak mam tendencję do pisania modyfikatora dostępu, równie dobrze mogę dokończyć nazwę i typ.


2

W Visual Studio Community Edition 2015 możesz wybrać wszystkie potrzebne pola, a następnie nacisnąć Ctrl+, .aby automatycznie wygenerować właściwości.

Musisz wybrać, czy chcesz użyć właściwości zamiast pola, czy nie.


1

Oprócz fragmentu „prop” i auto-właściwości, dostępna jest także opcja refaktora, która pozwala wybrać istniejące pole i ujawnić je za pomocą właściwości ( kliknij prawym przyciskiem myszy pole → RefaktoryzujObuduj pole ... ).

Ponadto, jeśli nie podoba Ci się implementacja „prop”, możesz utworzyć własne fragmenty. Ponadto narzędzie refaktoryzujące innej firmy, takie jak ReSharper, zapewni jeszcze więcej funkcji i ułatwi tworzenie bardziej zaawansowanych fragmentów. Polecam ReSharper, jeśli możesz sobie na to pozwolić.


Pierwsze łącze przekierowuje do dokumentacji programu Visual Studio 2005 Retired . Który z dziesięciu dotyczył? Przypuszczalnie jest to opis sposobu używania fragmentów w Visual Studio.
Peter Mortensen,

1

W Visual Studio 2019 wybierz swoje właściwości w ten sposób:

wprowadź opis zdjęcia tutaj

Następnie naciśnij Ctrl+r Następnie naciśnijCtrl+e

Pojawi się okno dialogowe pokazujące podgląd zmian, które zostaną wprowadzone w kodzie. Jeśli wszystko wygląda dobrze (co w większości będzie), naciśnij OK.


0

Nie mam już zainstalowanego programu Visual Studio na moim komputerze (i używam Linuksa), ale pamiętam, że w jednym z menu, które dało dostęp do kreatora klas, ukryty był kreator.

Za pomocą tego kreatora możesz zdefiniować wszystkie szczegóły swoich klas, w tym metody i atrybuty. O ile dobrze pamiętam, istniała opcja, za pomocą której możesz poprosić Visual Studio o automatyczne utworzenie setterów i getterów.

Wiem, że to dość niejasne, ale sprawdź to, a może się uda.



0

Najpierw pobierz rozszerzenie, po prostu naciśnij ( Ctrl+ Shift+ X) i zainstaluj program ustawiający ...

Następnie wybierz zmienną i kliknij prawym przyciskiem myszy. Przejdź do palety poleceń ...

I wpisz getter ... Sugeruje wygenerowanie metod get i set. Kliknij na to ...


1
Co rozumiesz przez „First Get Extension” ?
Peter Mortensen,

W jakim kontekście należy nacisnąć Ctrl + Shift + X?
Peter Mortensen,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.