Es gibt schon viele Fragen zum Kodieren eines Ausweises ähnlich wie SO, meine Frage ist anders. Angenommen, ich habe ein Webseitensystem, Abzeichen/Erfolge, die in der Datenbank als Zeile mit dem Leistungsschlüssel (ID), der Benutzerkennung und anderen Daten gespeichert sind.Architektur für Erfolge/Abzeichen
Meine einfache Frage ist, wo soll ich die Badge ID speichern? Ich habe eine Klasse pro Leistung mit allen Daten und Methoden zum Testen, wenn es verdient wurde. Ich kann mir vorstellen, dass ich irgendwann Dutzende oder Hunderte habe. Ich möchte, dass die IDs nur einmal und an einem bestimmten Punkt fest codiert sind, so dass ich keine Chance habe, sie versehentlich zu ändern oder zu vermischen.
ich schwer, sie in der Klasse codieren könnte, wie
public int Key { get { return 15; } } // I'm calling it Key, not ID
aber wenn ich mehrere Dateien meine Leistungen unter geteilt Ich will nicht um den höchsten Schlüssel suchen zu laufen haben, wenn ich eine neue hinzufügen man und riskiere einen Fehler.
ich sie in irgendeinem Wörterbuch in einer anderen Klasse setzen könnte ...
public class AchievementSet
{
private Dictionary<int, Achievement> _achievements;
public AchievementSet()
{
_achievements = new Dictionary<int, Achievement>()
{
{ 1, new SomethingAchievement() }
};
}
}
Aber jetzt ist die Klasse selbst nicht weiß, seinen eigenen Schlüssel, und es muss (oder doch?) Wenn ich bestehen es in den Konstrukteur jetzt riskiere ich die Zahlen nicht übereinstimmen.
Irgendwelche Empfehlungen?
Warum würden Sie die Badges nicht in der Datenbank speichern? –
Ich nehme an, weil jedem Code ein Code zugeordnet ist und Sie diesen Code immer noch mit der Badge-ID abgleichen müssen. Es würde also grundsätzlich nichts lösen. – guillaume31