Ich habe mich an viele Java-IDEs ( Eclipse , NetBeans und IntelliJ IDEA) gewöhnt ) mit denen Sie einen Befehl zum Generieren eines Standardkonstruktors für eine Klasse basierend auf den Feldern in der Klasse erhalten.
Beispielsweise:
public class Example
{
public decimal MyNumber { get; set; }
public string Description { get; set; }
public int SomeInteger { get; set; }
// ↓↓↓ This is what I want generated ↓↓↓
public Example(decimal myNumber, string description, int someInteger)
{
MyNumber = myNumber;
Description = description;
SomeInteger = someInteger;
}
}
Wenn ein Konstruktor alle Felder eines Objekts ausfüllt, ist dies in den meisten OOP-Sprachen eine so häufige Aufgabe. Ich gehe davon aus, dass ich auf diese Weise Zeit sparen kann, wenn ich diesen Code in C # schreibe. Ich bin neu in der C # -Welt und frage mich, ob mir etwas Grundlegendes an der Sprache fehlt. Gibt es in Visual Studio eine Option, die offensichtlich ist?
In Visual Studio 2015 Update3 habe ich diese Funktion.
Markieren Sie einfach die Eigenschaften und drücken Sie dann Ctrl+ .und dann Generate Constructor .
Wenn Sie beispielsweise zwei Eigenschaften hervorgehoben haben, wird vorgeschlagen, einen Konstruktor mit zwei Parametern zu erstellen. Wenn Sie drei ausgewählt haben, wird einer mit drei Parametern usw. vorgeschlagen.
Es funktioniert auch mit Visual Studio 2017.
quelle
public int Age { get; }
) Sie müssen bei Setzern angegeben haben, auch wenn dies vorübergehend ist, damit die Option verfügbar ist. Getestet in der VS2015 Community; Ich bin mir nicht sicher, ob dies in VS2017 behoben wurde.C # hat in Visual Studio 2010 eine neue Funktion namens "Aus Verwendung generieren" hinzugefügt. Die Absicht ist, den Standardcode aus einem Verwendungsmuster zu generieren. Eines der Merkmale ist das Generieren eines Konstruktors basierend auf einem Initialisierungsmuster.
Auf die Funktion kann über das Smart Tag zugegriffen werden, das angezeigt wird, wenn das Muster erkannt wird.
Nehmen wir zum Beispiel an, ich habe die folgende Klasse
Und ich schreibe folgendes in meine Bewerbung
Ein Konstruktor, der ein
int
nimmt, existiert nicht, daher wird ein Smart-Tag angezeigt und eine der Optionen ist "Konstruktor-Stub generieren". Wenn Sie dies auswählen, wird der CodeMyType
wie folgt geändert .quelle
Sie könnten dazu ein Makro schreiben - Sie würden den Parser von Visual Studio verwenden, um Informationen über die Mitglieder der Klasse abzurufen.
Ich habe ein ähnliches Makro geschrieben. (Ich werde den Code unten teilen). Das Makro, das ich geschrieben habe, dient zum Vorwärtskopieren aller Konstruktoren in einer Basisklasse, wenn Sie davon erben (nützlich für Klassen wie Exception, die viele ctor-Überladungen aufweisen).
Hier ist mein Makro (wieder löst es Ihr Problem nicht, aber Sie können es wahrscheinlich ändern, um das zu tun, was Sie wollen)
quelle
Ab Visual Studio 2017 scheint dies eine integrierte Funktion zu sein. Drücken Sie Ctrl+, .während sich Ihr Cursor im Klassenkörper befindet, und wählen Sie "Konstruktor generieren" aus der Dropdown-Liste " Schnelle Aktionen und Refactorings ".
quelle
Hier ist ein Makro, das ich für diesen Zweck verwende. Es wird ein Konstruktor aus Feldern und Eigenschaften generiert, die einen privaten Setter haben.
quelle
Vielleicht könnten Sie dies ausprobieren: http://cometaddin.codeplex.com/
quelle
Sie können dies problemlos mit ReSharper 8 oder höher tun. Das
ctorf
,ctorp
undctorfp
Schnipsel generieren Konstrukteuren , die alle Felder, Eigenschaften bevölkern , oder Felder und Eigenschaften einer Klasse.quelle
Hier ist das Visual Studio-Makro von JMarsh , das geändert wurde, um einen Konstruktor basierend auf den Feldern und Eigenschaften in der Klasse zu generieren.
quelle
Für Visual Studio 2015 habe ich eine Erweiterung gefunden , die genau dies tut. Es scheint gut zu funktionieren und hat eine relativ hohe Anzahl an Downloads. Wenn Sie ReSharper nicht verwenden können oder möchten, können Sie stattdessen ReSharper installieren.
Sie können es auch über NuGet erwerben .
quelle
Ich benutze den folgenden Trick:
Ich wähle die Deklaration der Klasse mit den Datenelementen aus und drücke:
Ctrl+ C, Shift+ Ctrl+ C, Ctrl+ V.
Das PROGRAMM ruft die Deklaration aus der Zwischenablage ab, findet den Namen der Klasse, findet alle Mitglieder und ihre Typen, generiert einen Konstruktor und kopiert alles zurück in die Zwischenablage.
Wir machen es mit Neulingen in meiner "Programming-I" -Praxis (Karlsuniversität, Prag) und die meisten Studenten schaffen es bis zum Ende der Stunde.
Wenn Sie den Quellcode sehen möchten, lassen Sie es mich wissen.
quelle