Ich bin auf der Suche nach einer Möglichkeit, eine neue Instanz einer Klasse mit einer Zeichenfolge als Name zu initialisieren, damit ich diese bestimmte Instanz in einer Liste finden kann ein späterer Punkt.Erstellen einer Instanz einer Klasse mit einem Namen in einer Zeichenfolge
Zur Zeit habe ich etwas entlang der Linien von diesem Code:
static List<ClassItem> classList = new List<ClassItem>();
private void updateClassList(Stream stream)
{
Message = Recieve(stream);
Interact(Message); //get the number of Classes about to be recieved
string ID;
string state;
for(int i = 0; i < numberOfClasses; i++)
{
Message = Recieve(stream);
interpretClassProperties(Message, out ID, out State);
ClassItem ID = new ClassItem(ID, state); //incorrect code
classList.Add(ID); //add new instance to list
}
}
Offensichtlich wird nicht funktionieren, da ich nicht eine Variable verwenden, kann eine Instanz der Klasse zu initialisieren, aber logisch zeigt es, was ich wollen erreichen. Jede Schleife fügt eine Instanz von ClassItem
(mit dem entsprechenden ID-Wert als Name) zur classList
hinzu, damit ich sie später finden kann.
Worauf muss ich achten, um dies zu erreichen?
Jede Rückmeldung wird geschätzt, einschließlich aller Warnungen vor zukünftigen Problemen, die ich möglicherweise habe, um das Problem auf diese Weise anzugehen. (Ich finde eine Klasseninstanz in einer Liste nach Namen).
Mögliche Duplikat [C# instantiate Klasse von string] (http://stackoverflow.com/questions/2247598/c-sharp-instantiate-class-from-string) –
Wie werden Sie brauchen „zu finden, dass bestimmter Fall zu einem späteren Zeitpunkt "? Es gibt ein paar Möglichkeiten zu tun, was Sie wollen, ich würde stattdessen eine 'Dictionary' stattdessen verwenden. Wenn Sie eine bestimmte ID erhalten möchten, tun Sie einfach 'ClassItem thing = dictionary [ID]', wobei 'ID' eine String-ID ist (oder was auch immer Sie wollen, Sie können' Dictionary 'usw.) .) –
Quantic
@Quantic Die Verwendung eines Wörterbuchs anstelle einer Liste klingt wie ein potenzielles Fix. Auf diese Weise kann ich das Wörterbuch nach dem relevanten Schlüssel und dem Wert der Instanz der Klasse durchsuchen. In Bezug auf meine Lösung würde ich jedoch, wenn ich stattdessen ein Wörterbuch verwenden würde, Probleme bekommen, wenn meine Klassen dasselbe genannt würden. Zum Beispiel, es ist in einer for-Schleife und so würde jede neue Instanz "Ding" genannt werden (um Ihr Beispiel zu nehmen). – James