1

您好我正在尝试使用 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 字符串并获取键值对的集合。但是要转换为对象,我们需要找到特定的键并将其映射到对象。

我怎样才能做到这一点?

4

1 回答 1

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...
}
于 2013-04-24T09:10:46.953 回答