1

在此处输入图像描述

我正在调用返回此对象的 Web 服务。我知道我应该在 C# 中使用对象反射来访问sentBatchTotal. 但是,我一生都无法弄清楚如何到达这处房产。我在这里和 MSDN 上查看了其他几篇文章,但并没有深入了解。

这是我的代码,我做错了什么?

private void button1_Click(object sender, EventArgs e)
{
    prdChal.finfunctions service = new prdChal.finfunctions();
    //Type thisObject = typeof()

    //Type myType = myObject.GetType();
    //IList<PropertyInfo> props = new List<PropertyInfo>(myType.GetProperties());

    String ThisName = "";
    Object StatusReturn = new Object();

    StatusReturn = service.UpdateGrantBillStatus(fundBox.Text, toBox.Text, fromBox.Text);
    var type = StatusReturn.GetType();
    var propertyName = type.Name;
    //var propertyValue = propertyName.GetValue(myObject, null);error here 
}
4

3 回答 3

3

不要首先将您的 StatusReturn 变量声明为对象类型。

//Object StatusReturn = new Object();

var StatusReturn = service.UpdateGrantBillStatus(fundBox.Text, toBox.Text, fromBox.Text);
if (StatusReturn.Count() > 0)
{
    var fixedAsset = StatusReturn[0];
}
于 2013-01-16T20:50:23.173 回答
2
dynamic d = service.UpdateGrantBillStatus(fundBox.Text, toBox.Text, fromBox.Text);
string result = (string)d[0].sentBatchTotal;
于 2013-01-16T20:48:51.537 回答
1

以下代码使用反射。

StatusReturn = service.UpdateGrantBillStatus(fundBox.Text, toBox.Text, fromBox.Text);
var type = StatusReturn.GetType();
var pi = type.GetProperty("sentBatchTotal");
if (pi != null) {
    var propertyValue = pi.GetValue(StatusReturn, null);
}

但是你不能只使用 webservice-method 返回类型而不是对象吗?比你可以直接读取属性。

就像是:

WhatEverTypeYourServiceReturns StatusReturn = service.UpdateGrantBillStatus(fundBox.Text, toBox.Text, fromBox.Text);
string sentBatchTotal = StatusReturn.sentBatchTotal;
于 2013-01-16T20:49:47.660 回答