我一直在对迭代属性进行一些研究,并提出了一个似乎可行的基本解决方案,但并不完全符合我的要求。我正在调用一个 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 中的每一个的 Value,而无需手动将每个 TypeShape 明确地转换为正确的对象。这甚至可能吗?