【发布时间】:2012-12-05 06:21:32
【问题描述】:
已经有很多关于编写类似于 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() }
};
}
}
但是现在类本身不知道它自己的密钥,它需要(或者是吗?)如果我现在将它传递给构造函数,我冒着数字不匹配的风险。
有什么建议吗?
【问题讨论】:
-
为什么不将徽章存储在数据库中?
-
我想,因为每个徽章都有关联的代码,您仍然需要将该代码与徽章 ID 匹配。所以它基本上不会解决任何问题。
标签: c# asp.net-mvc architecture achievements