Ci sono già molte domande sulla codifica di un sistema di badge simile a SO, la mia domanda è diversa. Supponiamo che disponga di un sistema di pagine Web, badge/obiettivi, archiviato nel DB come una riga con la chiave di conseguimento (id), l'ID utente e qualsiasi altro dato.Architettura per realizzazioni/distintivi
La mia semplice domanda è: dove dovrei memorizzare l'ID del badge? Ho una classe per risultato con tutti i dati e i metodi per testare se è stata guadagnata. Immagino che potrei avere dozzine o centinaia ad un certo punto. Voglio che gli ID vengano usati con un codice fisso solo una volta, e in un posto conciso, quindi non ho alcuna possibilità di cambiarli o mescolarli accidentalmente.
potevo dura loro codice nella classe, come
public int Key { get { return 15; } } // I'm calling it Key, not ID
ma se ho diviso i miei successi tra più file non voglio avere a correre intorno alla ricerca del tasto più alto quando aggiungo un nuovo uno e rischia un errore.
li ho potuto mettere in qualche dizionario in un'altra classe ...
public class AchievementSet
{
private Dictionary<int, Achievement> _achievements;
public AchievementSet()
{
_achievements = new Dictionary<int, Achievement>()
{
{ 1, new SomethingAchievement() }
};
}
}
Ma ora la classe stessa non conosce la propria chiave, e ha bisogno di (o lo fa?) Se ho superato nel costruttore ora risulto mismatching i numeri.
Qualche consiglio?
Perché non memorizzare i badge nel database? –
Suppongo, poiché il codice associato a ciascun badge è associato e dovresti ancora abbinare quella parte di codice con l'ID del badge. Quindi fondamentalmente non risolverebbe nulla. – guillaume31