我一直在研究迭代属性,并提出了一个似乎有效的基本解决方案,但并不能完全满足我的需求。我正在调用WebService方法,该方法返回具有大量属性的PeopleSoft对象。这些属性中的每一个都返回一些模糊类型的对象,这些对象需要花费太多时间单独进行类型转换。我的代码工作,它迭代属性,但它不显示值。以下是visual studio为其中一个属性生成的自动生成代码。
public SETIDTypeShape5 SETID {
get {
return this.sETIDField;
}
set {
this.sETIDField = value;
}
}
我猜测SETIDTypeShape5没有正确的ToString()方法,因为当它被打印时,它显示的全部是SETIDTypeShape5。我知道它有一个与之关联的Value属性,但有没有办法访问该值?这是我到目前为止的代码,以及一些输出的样子。
Type getType = idResponseTypeShape.GetType();
foreach (PropertyInfo info in getType.GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
String name = info.Name;
object value = info.GetValue(idResponseTypeShape, null);
Debug.WriteLine("{0} = {1}", name, value);
}
SETID = VendorMod.edu.clcillinois.fs3.SETIDTypeShape5
VENDOR_ID = VendorMod.edu.clcillinois.fs3.VENDOR_IDTypeShape5
VENDOR_NAME_SHORT = VendorMod.edu.clcillinois.fs3.VENDOR_NAME_SHORTTypeShape3
VNDR_NAME_SHRT_USR = VendorMod.edu.clcillinois.fs3.VNDR_NAME_SHRT_USRTypeShape1
VNDR_NAME_SEQ_NUM = VendorMod.edu.clcillinois.fs3.VNDR_NAME_SEQ_NUMTypeShape1
NAME1 = VendorMod.edu.clcillinois.fs3.NAME1TypeShape3
NAME2 = VendorMod.edu.clcillinois.fs3.NAME2TypeShape1
VENDOR_STATUS = VendorMod.edu.clcillinois.fs3.VENDOR_STATUSTypeShape1
我不确定我是否在彻底解释它,但我基本上是在寻找一种方法来获取每个TypeShapes的值,而无需手动将每一个明确地转换为正确的对象。这甚至可能吗?