我目前正在使用通用csv阅读器制作我的课程实例(请参阅source here)。它检查类具有哪些属性以及它们所处的顺序,然后从给定的csv文件中按顺序分配它们。
我的问题是我有一个类需要能够获取一个对象属性,因为它需要能够成为不同类型的类(该类的一个实例可能包含一个Foo类实例作为属性值而另一个有一个Bar类实例作为该属性值)。虽然读者不知道来自对象的字符串,但我不能将分隔字符放在csv中的对象位置内。但是,所有类都具有Name属性(字符串)。
我可以以某种方式将其用作搜索所有对象实例以进行密钥匹配的密钥吗?
应该拥有另一个类的类的示例:
public class ClassHolder : CsvableBase
{
public ClassHolder() { }
public ClassHolder(string name, object obj)
{
Name = name;
Obj = obj;
}
public string Name { get; set; }
public object Obj { get; set; }
}
public class Foo : CsvableBase
{
public Foo() { }
public Foo(string name, int amount)
{
Name = name;
Amount = amount;
}
public string Name { get; set; }
public int Amount { get; set; }
}
在Csv文件中,它的属性将如下所示:
名称;的OBJ
ClassHolderName; FooName FooAmount
所以ClassHolder的名称是正确的,但是Obj属性是字符串" FooName FooAmount"
如果这是不可能的,我会喜欢另一种方法的建议,我是编程新手,解决问题的方法越多,我就越了解。
答案 0 :(得分:0)
我强烈建议您使用XML或JSON而不是CSV。你正在做的是序列化分层的东西,这就是那些格式的设计目的。 CSV用于序列化平面,表格信息。
你可能将像CSV这样的东西变成适合的东西,但它不再是CSV了 - 除非这特别吸引你作为一个无用的有趣项目(我做过一个其中很少一些,我只想和其他人一起去。