VB.Net坚持使用系统反射的setvalue方法

时间:2013-06-09 08:27:55

标签: reflection system setvalue

由于每个人都花时间在这上面,所以需要大量的预付款!

我是否正确地这样做?它说“参数计数不匹配”。对于SetValue方法

For i = 0 To (missingFieldName.Count) - 1

Dim propertyiInfo As System.Reflection.PropertyInfo =       
GetType(ImportFields).GetProperty(missingValuesTakenfromUser.missingFieldAcquired(i, 0))

  Dim fieldacquired As String = missingValuesTakenfromUser.missingFieldAcquired(i, 1)

  propertyiInfo.SetValue(fields, fieldacquired, New Object() {0})

Next i

fields是类ImportFields的一个实例。在过去的两天里尝试了100种不同的方法。拼命寻找解决方案,请有人吗?

2 个答案:

答案 0 :(得分:0)

对于非索引属性,第三个参数应为null,而不是空数组。试试这个:

propertyiInfo.SetValue(fields, fieldacquired, null);

如果使用.net 4.5,则会出现一个新的重载,只能使用两个参数:

propertyiInfo.SetValue(fields, fieldacquired); // .net 4.5 only

答案 1 :(得分:0)

经过4天的持续斗争,得到了它。这是怎么做的

非常感谢Jods给出了一个提示。

For i = 0 To (missingFieldName.Count) - 1

Dim propertyiInfo As System.Reflection.PropertyInfo =   
GetType(ImportFields).GetProperty(missingValuesTakenfromUser.missingFieldAcquired(i, 0))

 Dim fieldacquired As String = missingValuesTakenfromUser.missingFieldAcquired(i, 1)

 propertyiInfo.GetValue(fields, Nothing)(0) = fieldacquired

Next i

实际上,当他们说索引项目时,MS有点混乱。对我来说,他们指的是阵列。

非常感谢所有为我解决这个问题的人。