我正在玩写一个项目制作系统,我有一天可能想把它放进游戏中。有Recipe
个指定了它们需要的成分和它们产生的成分。
我希望食谱灵活,这样他们只需要一大类成分,而不是一个确切的成分。例如,武器刀片的配方可能只是说它需要金属,而不是钢铁。配方必须验证给出的成分是否在可接受的范围内。某些材料可能属于多个类别。
然后我有一个可能很精彩,可能是疯狂的想法。 .net类型系统已经实现了!因此,对于每种材料,我添加了Type
类型的属性,并使用IsAssignableFrom
来验证成分的兼容性。
我有一个看起来像这样的文件:
public interface ItemType { }
public interface Material : ItemType { }
public interface Metal : Material { }
public interface Gold : Metal { }
public interface Silver : Metal { }
public interface Iron : Metal { }
public interface Steel : Metal { }
public interface Wood : Material { }
public interface Coal : Material { }
等等。这些都没有实施过。我只是为了自己的目的借用内置类型检查。
这有什么不妥吗?
如果我已经足够清楚地解释我在尝试在这里完成什么,那么你会建议一个好的方法来解决它,忽略这种整个系统滥用的事情?你也会使用这个解决方案吗?
第二个问题,我在这里所做的事情有什么值得注意的地方吗?
答案 0 :(得分:3)
这有什么不妥吗?
是的,一切。
更好的方法是简单的Item类,它具有标记集合。即使是简单的字符串就足够了。