C# MS VS 2010 Property Generator?

DaysShadow

Admiral
Registriert
Jan. 2009
Beiträge
9.169
Hi,

gibt es in Visual Studio 2010 entweder von Haus aus oder per Addin eine Möglichkeit Properties so einfach generieren zu lassen wie Getter/Setter für Java in Eclipse?
Hab eben schonmal die IDE durchforstet, aber so richtig fündig bin ich nicht geworden und im Internet scheint so etwas eigenartigerweise auch nicht (mehr) herumzugeistern.
Gab da wohl mal etwas für VS 2005, aber das ist wohl nicht mehr nutzbar mit den neueren Versionen.

Danke!
 
Code:
public string MeinTollesProperty {get; private set;}

Wofür braucht man da noch einen Generator?
 
Properties für vorhandene Attribute? Geht nicht mit Hausmitteln. Aber du kannst über die Code-Snippets("prop" eintippen und dann mit Doppel-Tab) Auto-Implementierende Properties generieren.
 
Wenn du prop schreibst und doppelt Tab drückst erzeugst du automatisch eine property. Es gibt verschiedene Templates dafür z.B. steht propg für ne Property mit privatem Setter. Ansonsten kannst du auch ein Feld markieren und mit STRG+R + E aus Feld ne property machen lassen. Eventuell hilft das.
 
Ja, diese Form der Autogenerierung hatte ich auch gefunden, aber woher weiß das Property welchen Member es zurückgeben soll?
Hatte es auch kurz getestet und eben das hatte sich bestätigt, es wurde nichts zurückgegeben.
Müssen die Member eine bestimmte Schreibweise haben?
Schreibe Member momentan so "meineTolleVariable" und Properties dann halt so "MeineTolleVariable".

Edit:

@ _Chris_:

Das will VS 2010 irgendwie nicht vollziehen mit STRG+R + E, gibt mir immer nur die Meldung aus, dass dies keine gültiger Befehl sei.

Vielleicht mache ich auch etwas falsch.
 
Dann benutzt doch STRG + R + E bzw. rechtsklick auf das Feld -> Umgestalten -> Kapseln
 
Also keine Ahnung wieso, aber ich finde das nicht.
Klicke ich rechts auf einen meiner Member -> Umgestalten, dann habe ich da Umbennenen und Methode extrahieren.
Die Kombination STRG+R +E wirkt auch nicht, da VS halt wie gesagt nur unten reinschreibt, dass dies kein gültiger Befehl sei.

Bei Bearbeiten -> Intellisense -> Generieren -> Eigenschaft gibt es immer eine Fehlermeldung, dass ich einen Bezeichner wählen soll oder der Cursor sich in einer ungebundenen Eigenschaftsverwendung befinden muss...

Bin etwas ratlos gerade :o
 
Dann benutzt doch STRG + R + E bzw. rechtsklick auf das Feld -> Umgestalten -> Kapseln
... kann ich nur bestätigen. Auf Englisch: Refactor>Encapsulate Fields...

Welche Version von VS 2010 hast du denn? Jedoch kann ich mir nich vorstellen, dass MS sowas bei den kleineren oder der Express-Version abgespeckt hat...
 
Ja, habe die Expressversion und komme mir ja selbst schon dämlich vor, aber ich habe bei dem Rechtsklick wirklich nur Umbenennen und Methode extrahieren zur Verfügung und der Shortcut funktioniert halt auch nicht.

Die Shortcuts prop und propg sind ja auch nett, aber da muss ich ja dann dennoch reinschreiben was zurückgegeben oder gesetzt werden soll...irgendwas läuft da verkehrt.
 
DaysShadow schrieb:
Ja, diese Form der Autogenerierung hatte ich auch gefunden, aber woher weiß das Property welchen Member es zurückgeben soll?
Hatte es auch kurz getestet und eben das hatte sich bestätigt, es wurde nichts zurückgegeben.
Müssen die Member eine bestimmte Schreibweise haben?
Schreibe Member momentan so "meineTolleVariable" und Properties dann halt so "MeineTolleVariable".
Kannst du dazu mal bitte den Code posten? Vielleicht liegt da auch nur ein Denkfehler vor. "Auto-Implemented Properties" sind so gesehen eine feine Sache - und funktionieren auch. Seit VS2010 auch für die ganz schreibfaulen VB.NET Programmierer.
Beispiel: http://msdn.microsoft.com/de-de/library/bb384054.aspx
 
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DS
{
    class Test
    {
        private int testVar;

        public int TestVar { get; set; }
    }
}

Reicht ja als Beispiel, der Rest meines Codes interessiert ja denke ich nicht, da es nur noch mehr Member, Properties und Methoden sind.

Das Property ist mit prop erzeugt, bin halt einfach zwei Zeilen runter, prop eingetippt, doppelt auf Tab und dann halt nur den Namen geändert.

Bin ja nicht generell faul, aber Getter/Setter sind halt einfach nur Schreibarbeit.

EDIT: Argh, ich habs kapiert. Bei prop und propg schreibt man nicht erst die Member und erzeugt dann über prop ein Property sondern nutzt direkt die Properties, die eine nicht im Code vorhandene Variable haben auf die sie zugreifen.
Der Link hat es mir klar gemacht.
 
Zuletzt bearbeitet:
Extra für dich hab ich Grafikmuffel mal ein paar Screenshots erstellt :)
 

Anhänge

  • vs_1.png
    vs_1.png
    129 KB · Aufrufe: 244
  • vs_2.png
    vs_2.png
    131,3 KB · Aufrufe: 248
  • vs_3.png
    vs_3.png
    33,8 KB · Aufrufe: 289
  • vs_4.png
    vs_4.png
    115,8 KB · Aufrufe: 231
Sehr nett, tut mir aber leid dich enttäuschen zu müssen:



Hast du eine normale Version von VS? Vielleicht hat MS wirklich dort an der Express Edition gekürzt.
 
Ja, ist ja auch ihr gutes Recht und die Auto-Properties tun es auch, wenn man sie dann endlich verstanden hat :p
Außerdem ist der Klassencode so um einiges schlanker, sofern es halt wirklich nur um Getter/Setter ohne andere Aufrufe darin geht.
 
Es ist aber nicht so schwierig selbst eigene Props zu schreiben. Den getter setter musst du nicht immer mit eine externe Variable versehen. Es reicht auch wenn du:

Code:
class bla
{
    public int X
    {
        get;
        set;
    }
}
machst...

Properties sind hilfreich wenn du generische Listen über die Klassen erstellen lässt... Soweit ich weiss kann man nicht auf die Felder mit eine generische Liste zugreifen, wenn du die Liste einen DataSource übergibst. Zumindest hab ich einmal versucht und der Compiler hat gemeckert. Aber es könnte sein dass ich mich irre.
Properties sind aber nichts anderes als ein Methodenaufruf:

Code:
class bla
{
    private int x;
    public int getter_X()
    {
        return x;
    }
    public int setter_X(int val)
    {
        x = val;
    }
}

das so ähnlich aussieht...

Ich hoffe ich habe jetzt hier kein Scheiß erzählt :D
 
roker002 schrieb:
Properties sind hilfreich wenn du generische Listen über die Klassen erstellen lässt... Soweit ich weiss kann man nicht auf die Felder mit eine generische Liste zugreifen, wenn du die Liste einen DataSource übergibst. Zumindest hab ich einmal versucht und der Compiler hat gemeckert. Aber es könnte sein dass ich mich irre.

Ich hoffe ich habe jetzt hier kein Scheiß erzählt :D

Naja so wirklich verstanden hab ich nich wirklich was du überhaupt ausdrücken willst, alleine der "Satz" mit den generischen Listen war mehr als verwirrend.
 
Sorry habe auch nicht durchgelesen als ich alles zuende geschrieben habe.

Ich meinte mit den Listen...

Wenn mann einen DataGridView eine Liste (List<MyClass>) zuweist, kann der DataGridView nur die Properties darstellen, als Spalten. Die Felder (Fields) werden aber im DataGridView nicht dargestellt (Eventuell arbeitet DataGridView DataSource mit Reflection nur auf die Properties).
 
Abgesehen davon, dass die Sache für mich schon erledigt ist, habe ich nie gesagt, dass es schwierig ist, sondern, dass es stumpfe Schreibarbeit ist wenn es wirklich nur um getter/setter geht.
Ich kannte halt die Auto-Properties nicht und nachdem ich dann verstanden hatte wie die funktionieren war es doch auch schon in Ordnung.
 
Zurück
Oben