私は C#、ASP.NET を使用しています。UPS API Tracking を使用して配送情報を取得しています。リクエストを行ったところ、非常に複雑で多くのフィールド/プロパティまたはその他のオブジェクトが埋め込まれたオブジェクト (trackResponse) が返されました。その中。
そのオブジェクトのすべての可能な値フィールド (string/int/double) を検索するようにプログラムするにはどうすればよいですか?
基本的には、次のような方法が必要です。
public static bool FindValueInObject(object Input, object SearchValue)
{
Type MyType = Input.GetType();
var props = typeof(MyType).GetProperties();
foreach (PropertyInfo propertyInfo in props)
{
//Console.WriteLine(string.Format("Name: {0} PropertyValue: {1}", propertyInfo.Name, propertyInfo.GetValue(mco, null)));
Type ObjectType = propertyInfo.GetType();
Type SearchType = SearchValue.GetType();
object ObjectValue = propertyInfo.GetValue(Input, null);
if (ObjectType == SearchType)
{
if(ObjectValue == SearchValue)
{
return true;
}
}
else
{
FindValueInObject(ObjectValue, SearchValue);
}
}
return false;
}
しかし、上記のコードは機能しませんでした。ご覧ください。