ToString unterschiedlicher Klassen nutzen
-
Hallo.
Ich habe unterschiedliche Klassen. Immer wenn eine neue erzeugt wird möchte ich überprüfen, ob der Name bereits vorhanden ist - wenn ja, wird der Name "incrementiert" - spielt keine Rolle - er wird verändert.
Ich habe die Klassen in statischen Listen gespeichert.
Das Ganze könnte so aussehen:
public static class GlobalVariables{ public static List<Klasse1> Klasse1Stack = new List<Klasse1>(); public static List<Klasse2> Klasse1Stack = new List<Klasse2>(); }
public class Klasse1{ string Name = ""; public Klasse1(string fName){ Name = StrFct.GetNextName(fName, GlobalVariables.Klasse1Stack); } public override string ToStrong(){return Name;} }
public class Klasse2{ string Name = ""; public Klasse1(string fName){ Name = StrFct.GetNextName(fName, GlobalVariables.Klasse1Stack); } public override string ToStrong(){return Name;} }
In meinem Programm sind das weit mehr als nur zwei Klassen, welche ich in einem Stack speichere.
Ich möchte jetzt EINE Function schreiben, welcher ich eine Liste übergeben kann und diese überprüft, ob der Wert für ToString() in einem der Elemente der Liste vorhanden ist und wenn dem so ist, dann soll er den Namen verändern und mir den nächsten freien Namen zurückgeben,
Das könnte so aussehen;
public static string GetNextName(string Text, List<Object> List) { string fText = Text; bool Exist = false; while (!Exist) { Exist = false; foreach (object obj in List) { if (obj.ToString() == fText) { fText = IncrementString(fText); Exist = true; } } } return fText; }
public static string IncrementString(string Text) { /*Es wird überprüft, ob der Name mit einer Zahl endet - ist dem nicht so, wird _001 angehängt - ansonsten wird die Zahl um den Wert 1 erhöht und der geänderte string zurückgegeben*/ }
Bei dem Object gibt er mir allerdings einen Fehlermeldung aus.
Argument 2: Cannot convert from List<Klass1> to List<Object>
*Class geht auch nicht. Gibt es eine Möglichkeit, eine Klasse allgemein zu übergeben bzw. eine Liste davon wenn sichergestellt ist, dass die Funktionc ToString() vorhanden ist?
Danke im Voraus,
Jan
-
Hallo,
nimm
IEnumerable<object>
oder
IList<object>
s.a. Sample Code
Stichwörter: Varianz bzw. Kovarianz