【发布时间】:2012-08-09 20:23:40
【问题描述】:
我正在尝试用 C# 编写一个简单的角色扮演游戏以更加熟悉该语言。
我有一个从 CSV 文件加载数据、创建对象并将其放入字典的类。因为游戏的每个方面都有不同的数据(项目、演员、技能等),所以我将这些数据设置为一个类,但这需要我为每个数据重新实现一个 Load() 方法。在这样做了 5 或 6 次之后,我想知道是否有更好的方法来实现它。
基本上,我想要做的是解析包含标题的 CSV 的第一行,并将它们用作类变量名。目前,它们是作为字典关系实现的,所以我会使用 SomeClassInstance.dict["id"],理想情况下我会在其中键入 SomeClassInstance.id,它完全由文件的内容生成。
那是一回事吗?我该怎么做?
【问题讨论】:
-
您可以使用反射来遍历类属性,测试属性名称是否与 CSV 列的名称匹配,然后设置值。也许 AutoMapper 可以提供帮助,但我不确定,您必须阅读一下有关它的信息
-
不要为了简化持久性而在设计中搞砸!
-
@AndreCalil 这导致了一些非常丑陋的代码:pastebin.com/uK5E4XMS
-
@James (1) 丑陋的代码不一定是糟糕的代码。 (2) 无论如何,它都可以被重写为更漂亮。 (3) 当有人提出问题时,我不打算改变情景。如果 OP 使用 CSV 存储数据,那么请继续关注这个问题。我他问“有没有更好的持久性方法?”,事情会很不一样
标签: c# design-patterns dynamic csv