已经有很多关于编写类似于 SO 的徽章系统的问题,我的问题是不同的。假设我有一个网页系统、徽章/成就,作为一行存储在数据库中,其中包含成就密钥 (id)、用户 ID 和任何其他数据。
我的简单问题是,我应该在哪里存储徽章 ID?每个成就我都有一个课程,其中包含所有数据和方法来测试它是否已经获得。我想我可能有几十个或几百个。我希望仅在一个简洁的地方使用硬编码一次的 ID,因此我不会意外更改它们或将它们混淆。
我可以在课堂上对它们进行硬编码,比如
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() }
};
}
}
但是现在这个类本身不知道它自己的密钥,它需要(或者是吗?)如果我现在将它传递给构造函数,我冒着数字不匹配的风险。
有什么建议吗?