Ich versuche, einen Enumerationswert in einer Klasseninstanz basierend darauf zu bearbeiten, ob diese Instanz in einem Dictionary vom Typ <string, myClass>
erscheint. Was mir logisch erscheint, ist die Code-Schnipsel unten zu tun:Bearbeiten einer Enumeration in einer Klasse (auf Element kann nicht mit einer Instanzreferenz zugegriffen werden)
if (pumpDict.ContainsKey(ID))
{
foreach(KeyValuePair<string, PumpItem> kvp in pumpDict)
{
if(kvp.Key == ID)
{
kvp.Value.state = kvp.Value.state.Available; //error here
kvp.Value.fuelPumped = fuelPumped;
kvp.Value.fuelCost = fuelCost;
break;
}
}
}
else
{
PumpItem pump = new PumpItem();
pumpDict.Add(ID, pump);
}
Und meine PumpItems Klasse ist so:
namespace PoSClientWPF
{
public enum pumpState
{
Available,
customerWaiting,
Pumping,
customerPaying
};
public enum fuelSelection
{
Petrol,
Diesel,
LPG,
Hydrogen,
None
};
class PumpItem
{
public double fuelPumped;
public double fuelCost;
public fuelSelection selection;
public pumpState state;
public PumpItem()//intialize constructor
{
this.fuelPumped = 0;
this.fuelCost = 0;
this.selection = fuelSelection.None;
this.state = pumpState.Available;
}
}
}
Ich führte zu glauben, dass eine ENUM-Wert in einem Konstruktor zu haben, sie müssen wie oben beschrieben eingerichtet werden, wobei eine neue Instanz dieser enums im Klassenkörper deklariert wird.
Es scheint mir, dass das, was ich versuche, logisch zu tun ist, aber ich bin immer einen Fehler auf der rechten Seite der Zuweisung der es heißt:
„Mitglied PoSClientWPF.pumpState.Available kann nicht zugegriffen werden mit einer Instanzreferenz; qualifizieren ist mit einem Typnamen stattdessen "
Ich habe nach diesem Fehler unter mehreren Foren gesucht, aber scheint nur Fehler zu finden, die statische Variablen falsch aufrufen. Kann mir jemand auf eine Lösung hindeuten?
Vielen Dank im Voraus.
Änderung 'kvp.Value.state.Available;' für 'pumpState.Available;' –
'kvp.Value.state = pumpState.Available'? – Quantic
beide in der Tat richtig, weiß nicht, warum ich die falsche Zuordnung nicht selbst gefunden habe. – James