SO के समान बैज सिस्टम को कोड करने के बारे में बहुत सारे प्रश्न हैं, मेरा प्रश्न अलग है। मान लें कि मेरे पास उपलब्धि कुंजी (आईडी), उपयोगकर्ता आईडी और कोई अन्य डेटा के साथ एक पंक्ति के रूप में डीबी में संग्रहीत एक वेब पेज सिस्टम, बैज/उपलब्धियां हैं।उपलब्धियों/बैज के लिए आर्किटेक्चर
मेरा सरल सवाल यह है कि, मुझे बैज आईडी कहां स्टोर करनी चाहिए? मेरे पास अर्जित किया गया है कि परीक्षण के लिए सभी डेटा और विधियों के साथ एक कक्षा प्रति उपलब्धि है। मुझे कल्पना है कि मेरे पास कुछ बिंदु पर दर्जन या सैकड़ों हो सकते हैं। मैं चाहता हूं कि आईडी को केवल एक बार हार्ड कोड किया जाए, और एक संक्षिप्त जगह में, इसलिए मुझे गलती से उन्हें बदलने या उन्हें मिश्रण करने का कोई मौका नहीं है।
मैं कठिन
public int Key { get { return 15; } } // I'm calling it Key, not ID
की तरह, कक्षा में उन्हें कोड सकता है, लेकिन अगर मैं एक से अधिक फ़ाइलों के बीच मेरी उपलब्धियों को विभाजित मैं जब मैं एक नया जोड़ने के उच्चतम कुंजी की तलाश में चारों ओर चलने के लिए है नहीं करना चाहती एक और एक गलती का जोखिम।
मैं उन्हें एक और कक्षा में कुछ शब्दकोश में डाल सकता है ...
public class AchievementSet
{
private Dictionary<int, Achievement> _achievements;
public AchievementSet()
{
_achievements = new Dictionary<int, Achievement>()
{
{ 1, new SomethingAchievement() }
};
}
}
लेकिन अब वर्ग खुद अपनी ही कुंजी पता नहीं है, और यह करने की जरूरत है (या यह करता है?) अगर मैं पारित कर दिया यह अब कन्स्ट्रक्टर में है, मैं संख्याओं को मेल नहीं कर रहा हूं।
कोई सिफारिशें?
आप बैज को डेटाबेस में क्यों स्टोर नहीं करेंगे? –
मुझे लगता है, क्योंकि प्रत्येक बैज से जुड़ा कोड है और आपको अभी भी बैज आईडी के साथ कोड के उस टुकड़े से मिलान करने की आवश्यकता होगी। तो यह मूल रूप से कुछ हल नहीं करेगा। – guillaume31