Ich hatte einige Probleme beim Versuch, dies auszuarbeiten, und es ist sicherlich möglich, dass ich einfach nicht an den richtigen Stellen suchen, aber ich habe Probleme Entwerfen einer Klasse, die eine enthält Sammlung einzelner Eigenschaften und unterstützt auch einfache Auflistung aller Eigenschaften in dieser Klasse.C# Entwerfen einer Klasse zur Unterstützung der Enumeration
Zum Beispiel:
public class CharacterStats
{
public List<BaseStat> StatList { get; set; }
private BaseStat Level { get; set; }
private BaseStat Health { get; set; }
private BaseStat Damage { get; set; }
private BaseStat Defense { get; set; }
}
private void InitializeList()
{
StatList = new List<BaseStat>
{
Level,
Health,
Damage,
Defense,
};
}
Letztlich jede dieser Eigenschaften ist wichtig, in seinem eigenen Recht, aber es gibt bestimmte Fälle, in denen ich durch all diese Eigenschaften in einer Schleife will und führen Kontrollen auf jedem von ihnen .
Ich bin (irgendwie) vertraut mit reflection
, aber es fühlt sich klobig und unnötig an, über die Eigenschaften auf diese Weise zu iterieren. Ich habe jetzt das eingerichtet, um die Eigenschaften in eine List<BaseStat>
zu rollen und auf diese Weise zu iterieren, aber ich bin immer noch nicht ganz sicher, ob das die "richtige" Implementierung ist.
Einige Dinge zu beachten:
- Je nach Nutzung, ich mag einen Hinweis auf eine einzige Eigenschaft aktualisieren (nach Namen), OR Update die gesamte Sammlung (vermutlich durch Aufzählung).
- Beim Aktualisieren der gesamten Sammlung wird (wahrscheinlich) mit einem anderen Objekt vom Typ
CharacterStats
(oder etwas ähnlichem), das Modifikatoren für einige oder alle dieser Eigenschaften enthält.
Idealerweise ich bin auf der Suche nach einer Lösung dieser Klasse als eine Sammlung darstellen, wo ich einfach einen einzelnen Wert oder mehrere Werte nach Bedarf aktualisieren.
Verwenden Sie eine List<T>
oder reflection
den Weg zu gehen, oder gibt es eine bessere Methode, die ich nicht berücksichtigt habe? Ich habe in den letzten Tagen viel in den Interwebs herumgestöbert, um eine Lösung zu finden, aber ich habe entweder Informationen gefunden, die (glaube ich) irrelevant sind, oder mich einfach weiter verwirrt.
Sachlich unter Berücksichtigung der potenziellen Performance-Probleme (ich dieses Argument gehört habe in Bezug auf reflection
) und besonders einfache Bedienung und Lesbarkeit, wie soll ich diese Klasse so auszugestalten, dass ich mit ihm arbeiten kann, wie ich habe beschrieben?
Bitte kommentieren Sie, wenn weitere Informationen zur Klärung benötigt werden.
Verwenden Sie Code als Beispiel, warum nicht eine "Liste"? Obwohl ich nicht denke, dass es eine sehr nette Lösung ist. –
Sie könnten eine Eigenschaft auf Ihre Klasse vom Typ IEnumerable haben und nur Rendite alle Eigenschaften zurückgeben? –
juunas
@DarrenYoung Entschuldigung dafür, dass ich den Code verlassen habe, aber das mache ich gerade. Das funktioniert, aber ich versuche herauszufinden, ob es eine bessere Möglichkeit gibt, diese Daten darzustellen. Ich habe meinen List <> Code zum Beispiel hinzugefügt. – levelonehuman