【发布时间】:2015-02-09 22:58:51
【问题描述】:
我有一个 CSV 解析器,它逐行获取文本并将其解析为值。我试图将这些值放在Dictionary<string, T> 中并返回它,其中 T 是 CharacterStatElement 类的后代。我确实知道我在解析 CSV 时希望 T 成为什么类,但我不想多次重写/复制相同的解析器函数来覆盖我想要返回的每个类型来自它。
我应该为整个事情编写一个通用方法(如果是,我如何在方法中声明并返回?)还是应该在这里做一些其他模式? p>
关于 CharacterStatElement 的更多信息:每个子类都包含几个我在使用反射进行解析时发现的字段。每个子类都有不同的值,但它们都应该以相同的方式解析。此外,这只会在每次按钮单击时发生一次,而不是在循环中发生,因此速度不是问题。并且提取方法的内容以将其包装在非泛型方法中对我没有多大好处,因为大多数解析方法都通过我使用反射与预期的类型相关联。
【问题讨论】:
-
您是否知道在解析
.CSV文件时可以使用许多强大的函数......例如string.Split()函数允许这种性质的事情,您可以创建一个类适合或模仿文件结构... -
如果它总是来自 CharacterStatElement 那么为什么不返回/传递一个字符串字典=>CharacterStatElement
-
我实际上是在使用 string.Split,它知道将字段转换为什么类型,我对传入的类使用反射。
-
@pm100 我读到我不能将 CharacterStatElement 转换为子类型。这就是我认为我现在几乎正在工作的内容,但我想不出一种方法来让对象在以后恢复为子类型。
-
确保您可以将基类型转换为子类型,var child = base as ChildType,如果它不是有效的转换(即基不是 ChildType 的实例),则 child 将为 null跨度>
标签: c# csv generics dictionary