Ich habe zwei geerbte Klassen. Diese Klassen haben einige statische Variablen. Was ich tun möchte ist, dass ich Wert eines Objekts auf seinen Kindklassennamen setzen und Kindklassenmethoden mit Elternobjekt aufrufen möchte. Hier ist der Beispielcode:Setzen Sie den Wert der Variablen auf einen Klassennamen
class BlueSwitch : Switch {
public static string Foo = "bar";
}
class Green : Switch {
public static string Foo = "bar2";
}
Switch oSwitch = BlueSwitch;
Console.WriteLine(oSwitch.Foo); // should print out "bar" but instead i get compiler error
oSwitch = GreenSwitch;
Console.WriteLine(oSwitch.Foo); // should print out "bar2" but instead i get compiler error
Andere Ideen, wie kann ich das tun?
'Switch oSwitch = BlueSwitch;' wird nicht einmal kompilieren. Sie müssen eine Instanz wie 'Switch oSwitch = new BlueSwitch() erstellen;' – RafaelC
Um über Instanz Ihrer Klassen aufzurufen, müssten Sie eine Instanz "neu" erstellen und dann in diesen Klassen vielleicht eine schreibgeschützte Instanzeigenschaft definieren, die die statische zurückgibt Wert. Aber warum nicht einfach über den statischen 'BlueSwitch.Foo' anrufen? Auch eine schlechte Idee, ein statisches Feld wie dieses zu entlarven, da es nicht readonly ist und von jedem geändert werden könnte – pinkfloydx33