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 の return-type だけを使用することはできませんか? プロパティを直接読み取ることができます。

何かのようなもの:

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