Ich habe eine switch-Anweisung in einer Klasse, die Command-Objekte generiert, basierend darauf, ob eine bestimmte Zeile in einer Codedatei mit dem bestimmten Code für dieses Command-Objekt übereinstimmt.Verwenden von Eigenschaften in Switch-Anweisungsfällen?
wie folgt aus:
switch (line):
{
case "#CODE1":
return new Command1();
case "#CODE2":
return new Command2();
}
Ich möchte wie diese es in etwas verwandeln:
switch (line):
{
case Command1.Code:
return new Command1();
case Command2.Code:
return new Command2();
}
ich es versucht, durch eine öffentliche statische Eigenschaft von Command1 zu schaffen, aber der Compiler beschwert sich ...
Gibt es eine Möglichkeit, etwas in dieser Richtung zu tun, über die sich der Compiler nicht beschweren wird?
Ich mag es nicht, dass die Stringkonstanten "auswendig gelernt" werden müssen. Ich möchte, dass sie an ihre jeweiligen Befehle angehängt werden. Tippfehler sind auf diese Weise nicht möglich. Intellisense wird sie fangen. –
Wahr, aber Sie können immer noch Tippfehler in Ihrer Codedatei haben. Der Punkt ist, zu tun, was Sie wollen, Sie müssen die Variable zuerst instanziieren. Nachdem Sie den Eigenschaftswert überprüft haben, können Sie die neue Instanz nicht erstellen. Sie müssen die Instanz erstellen, bevor Sie nach Ihrem Wert suchen können. – Beth
Nachdem ich Ihren Kommentar unten gelesen habe, bin ich mir nicht sicher, warum der Compiler sich über eine switch-Anweisung beklagen würde und nicht ob/then/else. Ich dachte, es beschwere sich über Ihre Objektreferenz, obwohl das nicht klar war. Wenn Sie es mit der if/then/else-Struktur arbeiten lassen, und Sie es zurück zu wechseln geändert haben, erhalten Sie immer noch Fehler vom Compiler? – Beth