Gibt es eine Möglichkeit, zur design-Zeit, die zum initialisieren eines Objekts mit allen Eigenschaften in Visual Studio 2010?
Hintergrund
Schreibe ich code in VS 2010, .NET 4, C#. Auch im Fall, dass es wichtig ist, ich verwende die neueste version von ReSharper.
Frage
Sagen wir, ich habe dieses Modell:
public class SomeObject
{
public string Red{ get; set; }
public string Green{ get; set; }
public string Blue{ get; set; }
public string Yellow{ get; set; }
public string Purple{ get; set; }
public string Orange{ get; set; }
public string Black{ get; set; }
}
Anderswo im code benötige ich zum instanziieren eines dieser Objekte, etwa so:
SomeObject myObject = new SomeObject{
red = "some value",
blue = "some other value",
. . .,
black="last value"
};
*HINWEIS:*ich werde manchmal initialisieren möchten Sie dieses Objekt mit nur eine Teilmenge der insgesamt möglichen Eigenschaften (also nur rot und blau).
Im moment, ich habe zu geben, die in jeder Eigenschaft (rot, blau, grün, etc.) für jede neue Instanz von SomeObject
. Gibt es einen hotkey oder sowas in VS2010, um diese Eigenschaften haben bereits aufgefüllt, so dass ich nur zuweisen von Werten eingeben, anstatt die?
- bereits mit dem, was Wert? Der Standardwert für den Typ? Wie, was passiert, wenn Sie nicht wirklich setzen Sie Sie (es sei denn, Sie haben überschrieben, den default-Konstruktor)?
- Dies ist, was ein Konstruktor ist.
- es sei denn, Sie sind nicht derjenige, der schrieb den Konstruktor
- möglich, Duplikat der Autocompleting Initialisierer mit Resharper 6 in Visual Studio 2010
Du musst angemeldet sein, um einen Kommentar abzugeben.
Persönlich, wenn Sie benötigen, um diesen für jedes Objekt eine Instanz ist, würde ich behandeln Sie dies, indem Sie einen Konstruktor, der alle Parameter, und nicht nur das Objekt-Initialisierung syntax. Dies gibt Ihnen die volle intellisense, aber auch helfen,/die Kraft zu konstruieren, die das Objekt richtig jeder Zeit.
Denken Sie daran, einen Typ-Konstruktor sollte zwingen, Sie liefern alle notwendigen Parameter korrekt initialisiert das Objekt in einem ordnungsgemäßen Zustand. Der einzige Nachteil an objektinitialisierer ist, dass Sie nicht die Kraft dies zur compile-Zeit. Als solche, wenn Sie alle diese Eigenschaften sind erforderlich für jedes Objekt, Instanz, Konstruktor liefern sollte, anstatt über Objekt-Initialisierungen.
SomeObject
mit einer Teilmenge der insgesamt möglichen Eigenschaften. Ich hätte mehr darüber im klaren, dass im OP, auf jeden Fall aber, ist diese schlechte Praxis? Danke!Können Sie verwenden die Intelligente Code-Vervollständigung.
Schreiben:
new SomeObject{
Dann drücken Sie Strg+Alt+Space:
-> Alle möglichen Eigenschaften aufgelistet sind, die in einem tooltip-Fenster
Wählen Sie dann eine Eigenschaft (z.B. 'Rot') und drücken Sie die EINGABETASTE
-> new SomeObject (Rot = }
Dann geben Sie "" und drücken Sie wieder Strg+Alt+Space wählen Sie als Nächstes Eigentum und so weiter.
Sind alle Eigenschaften, die immer das gleiche?
Warum nicht fügen Sie einen Konstruktor, wo Sie bereits eingestellt sind? Oder mehr als eins.
Werfen Sie einen Blick auf die Code-Snippets. Ich denke, das wird Sie geben, was Sie wollen.
Gibt es keinen Tastatur-shortcut, um generisch bereiten einen objektinitialisierer.
Die VS-IDE oder Reshaper kann nicht machen Sie eine vernünftige Vermutung über die Werte, die Sie möchten, um die Eigenschaften zu, so würde das einfügen Ungültiger oder bestenfalls sub-optimalen code.
Könnten Sie implementieren eine bestimmte Lösung, wie die anderen Antworten deuten und constructrs sind proabably dem Weg zu gehen, wenn Sie sich finden, dies zu tun repititiously aber, ich glaube nicht, dass war Ihre Frage.
???
Platzhalter für die getter/setter code, so dass es "keinen Grund" es kann nicht dasselbe tun, wenn explodierenden Instanz-Initialisierung.Wollen Sie wirklich die Farben für Lesen/schreiben? Wenn nicht, ist dies die einfachste Lösung:
Jedoch, wenn Sie wollen, flexibler zu sein, und in der Lage sein initialisieren nur einige der Eigenschaften, können Sie den Objekt-Initialisierung syntax. Mit Ihrer ursprünglichen
SomeObject
Implementierung, die Sie erstellen können ein neues Objekt mit:Guten morgen, Sie sollten in der Lage sein, dies zu tun entweder durch die Schaffung einer Visual Studio-Code-Snippet
oder Sie erstellen ein ReSharper Die Code-Vorlage