将输入字符串转换为实际对象的函数

时间:2011-01-12 21:02:46

标签: vb.net

我不确定如何描述我正在寻找的东西,所以希望情况会有所清楚。

我有一个具有许多属性的对象(比如object.one,object.two,object.three)。这些属性中大约有30个,它们都包含一个字符串(“通过”或“失败”)。

现在,现有代码会检查属性是否具有“Pass”或“Fail”值,然后运行一些打印出来的代码。也就是说,相同的代码片段重复30次,每个属性都有一个。

代码看起来像这样

if(object.one = ...)
...
结束如果
如果(object.two = ...)
...
结束如果
如果(object.three = ...)
...
如果

结束

我想用一个循环来清理这个混乱(每个块很大),但我不知道该怎么做。我想也许有一种方法可以构建像“object.one”这样的字符串并运行一些函数来告诉编译器这实际上是对象的属性?

这样我就可以创建一个包含对象名称的数组,比如我的array = {“object.one”,“object.two”,“object.three”},然后在伪代码中执行类似的操作

对于我的数组中的每个字符串
如果(some_function(string)= ...)
...
结束如果

基本上,它会占用大量重复代码块并将其减少到一个块。我正在寻找这样的功能吗? 这是在VB.net。

2 个答案:

答案 0 :(得分:0)

您似乎在描述serialization,这是将对象状态转换为可以存储/传输和反序列化的格式的行为,这是相反的。

.NET框架有几个可以处理文本的不同序列化程序 - XML或JSON - 用于XML的DataContractSerializer和用于JSON的DataContractJsonSerizlizer

答案 1 :(得分:0)

我不确定我是否理解但您可以使用反射并获取对象属性运行时?

使用反射,您可以访问公共对象属性,使用PropertyFiled.GetValue()来获取一个,两个等,并构建一个数组(我假设一个,两个等是对象属性,是吗?)

您可以在此处找到更多信息:http://msdn.microsoft.com/en-us/library/system.reflection.aspx

抱歉我的英语不好,我是意大利人。