.NET反射 - 在不知道其名称的情况下检索属性

时间:2014-03-13 15:33:28

标签: vb.net wcf reflection

我已经获得了要使用的WCF服务的集合,它们都是相同的,除了命名服务返回的对象的某些属性的方式。如果我有服务A,B和C,它们每个都返回几乎相同的对象,除了对象的属性已被更改以反映它们来自哪里的服务。因此,服务A返回一个名为responseA的对象,其属性为responseA.AValidation,B返回一个类似的对象,其中包含一个名为responseB.BValidation.的属性

现在,尽管可能希望对服务进行更改,但我不能。这意味着我无法为每个服务编写完全相同的代码,以检查各种可能的错误情况,

If responseA.AErrors.Length > 0
...
If responseB.BErrors.Length > 0
...
and so on

我喜欢写的是一个可以使用这些服务的泛型类,并且有一个方法可以对它们中的任何一个执行上面的检查但是,我很难理解如何检查属性的值当该属性的名称在类与类之间略有不同时。

那么,是否有可能返回一个我不知道运行时名称的属性的值?

这是我到目前为止所尝试的内容

Dim responseType As Type = responseA.GetType()

For Each Prop In responseType.GetProperties()
 If Prop.Name.Contains("ErrorInfoTypes") Then
  Dim errorTypes()
  errorTypes = Prop.GetValue(GetType(Array), Nothing)
  If errorTypes.Length > 0 Then
   'Deal with the fact there are errors.
  End If
  Exit For
 End If
Next

这符合,但.GetProperties不返回任何属性。我错过了什么?

0 个答案:

没有答案