将对象 属性 从字符串键转换为特定的 class 实例
Convert object property to specific class instance from a string key
我目前正在从通用 csv reader(参见 source here)创建我的 classes 的实例。它检查 class 具有哪些属性以及它们的顺序,然后从给定的 csv 文件中按该顺序分配它们。
我的问题是我有一个 class 需要能够接受一个对象 属性,因为它需要能够是不同类型的 classes( class 的一个实例可能包含 Foo class 实例作为 属性 值,而另一个包含 Bar class 实例作为 属性 值)。 reader 虽然不知道来自对象的字符串,但我无法将分隔符放在 csv 中的对象中。但是,所有 classes 都有一个名称 属性(string)。
我能以某种方式使用它作为键来搜索所有对象实例以获得键匹配吗?
一个 class 应该包含另一个 class 的例子:
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 文件中,它的属性会这样写:
名称;对象
ClassHolderName;FooName FooAmount
所以 ClassHolder 的名称是正确的,但是 Obj 属性 是字符串 "FooName FooAmount"
如果这不可能,我会喜欢另一种方法的建议,我是编程新手,我知道的解决问题的方法越多越好。
我强烈建议您使用 XML 或 JSON 而不是 CSV。你正在做的是序列化一些分层的东西,这就是这些格式的设计目的。 CSV 设计用于序列化扁平的表格信息。
您 可以 将 CSV 之类的东西拼凑成合适的东西,但它不再是真正的 CSV - 除非它作为一个无用的有趣项目特别吸引您(我已经完成了其中的一些),我只想和其他人一起去。
我目前正在从通用 csv reader(参见 source here)创建我的 classes 的实例。它检查 class 具有哪些属性以及它们的顺序,然后从给定的 csv 文件中按该顺序分配它们。
我的问题是我有一个 class 需要能够接受一个对象 属性,因为它需要能够是不同类型的 classes( class 的一个实例可能包含 Foo class 实例作为 属性 值,而另一个包含 Bar class 实例作为 属性 值)。 reader 虽然不知道来自对象的字符串,但我无法将分隔符放在 csv 中的对象中。但是,所有 classes 都有一个名称 属性(string)。
我能以某种方式使用它作为键来搜索所有对象实例以获得键匹配吗?
一个 class 应该包含另一个 class 的例子:
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 文件中,它的属性会这样写:
名称;对象
ClassHolderName;FooName FooAmount
所以 ClassHolder 的名称是正确的,但是 Obj 属性 是字符串 "FooName FooAmount"
如果这不可能,我会喜欢另一种方法的建议,我是编程新手,我知道的解决问题的方法越多越好。
我强烈建议您使用 XML 或 JSON 而不是 CSV。你正在做的是序列化一些分层的东西,这就是这些格式的设计目的。 CSV 设计用于序列化扁平的表格信息。
您 可以 将 CSV 之类的东西拼凑成合适的东西,但它不再是真正的 CSV - 除非它作为一个无用的有趣项目特别吸引您(我已经完成了其中的一些),我只想和其他人一起去。