您好我正在尝试使用C#在Windows 8 App中创建一般的CSV解析器。我想创建一个解析器,当我传递Type T和字符串CSV和Object时,我应该得到这样的对象:
T obj = ParserCSV<T>(CSVString);
目前,我可以在MSDN链接上获取该http://code.msdn.microsoft.com/CSV-Parser-for-WinRT-42e0f4d0
的样本在此我们解析csv字符串并获取Key Value对的集合。但是要转换为对象,我们需要找到特定的键并将其映射到对象。
我怎样才能做到这一点?
答案 0 :(得分:0)
查看Activator.CreateInstance方法;这将使用与指定参数最匹配的构造函数创建指定类型的实例。在你的案例中使用它的一个例子是
Activator.CreateInstance("myAssemblyName", "myType")
所以,如果你有以下课程
public class Person
{
private string _name;
public Person() { }
public Person(string name)
{
this._name = name;
}
public string Name
{
get { return this._name; }
set { this._name = value; }
}
}
您可以使用以下内容创建对象实例:
ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
Person p = (Person) handle.Unwrap();
p.Name = "Samuel";
Console.WriteLine(p);
将打印“塞缪尔”。在您的情况下,对于每个KeyValuePair
,您可以使用上述实例化相关对象。
我希望这会有所帮助。
编辑。解决其他问题。
Dictionary<String, String> someDict = new Dictionary<String, String>();
someDict = GetDictOfKvpFromCsv(); // Get the dictionary from your CSV.
foreach (KeyValuePair<String, String> kvp in someDict)
{
ObjectHandle handle = Activator.CreateInstance(kvp.Key, kvp.Value);
ISomeType t = (ISomeType)handle.Unwrap();
// Do other stuff...
}