2013-02-28 67 views
0

我有一个类,一些简单的像字符串转换在运行时的对象类型

class Example 
{ 
    uint id; 
    ushort value1; 
    string value2; 
    DateTime timestamp; 
} 

我也有一个csv,如:

id;value1;value2;timestamp 
5;0x2313;whatever;2012-12-23-12:14:34,567 
6;0x2A14;something;2012-12-24:13:14:15:167 

我想创建一个基于CSV对象,但真正的类是一个很大很大,容易发生变化,所以我想用反射。 我有一些代码获取属性的名称并找到相应的字符串。我没有得到的是,我如何将字符串转换为属性的任何类型。我发现了一些代码示例如何对数值进行CAST处理,但是将一个字符串转换为short值并不像是一个解决方案。

任何想法?

+1

你应该看看'LINQToCSV'。 – 2013-02-28 09:40:34

回答

4

可以使用Convert.ChangeType方法:

myObject.Field = Convert.ChangeType(value, fieldType); 
+0

以及我错过了这个功能,谢谢你指出 – 2013-02-28 10:34:14

0

你可能想看看Convert类。 如果您知道要将字符串转换为的类型,则可以使用该类型。或者,您可以使用该类型的Parse()或TryParse()方法。

例如,将字符串转换到短,你可以使用Int16.TryParse()