1

私は 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;
    }

しかし、上記のコードは機能しませんでした。ご覧ください。

4

1 に答える 1

1

ほら…。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            var mco = new MyComplexObject();
            mco.MyDate1 = DateTime.Now;
            mco.MyDate2 = DateTime.Now;
            mco.MyDate3 = DateTime.Now;
            mco.MyString1 = "String1";
            mco.MyString2 = "String1";
            mco.MyString3 = "String1";


            var props = typeof(MyComplexObject).GetProperties();
            foreach (PropertyInfo propertyInfo in props)
            {
                Console.WriteLine(string.Format("Name: {0}  PropertyValue: {1}", propertyInfo.Name, propertyInfo.GetValue(mco, null)));
            }
            Console.ReadLine();
        }
    }


    public class MyComplexObject
    {
        public string MyString1 { get; set; }
        public string MyString2 { get; set; }
        public string MyString3 { get; set; }
        public DateTime MyDate1 { get; set; }
        public DateTime MyDate2 { get; set; }
        public DateTime MyDate3 { get; set; }
    }

}
于 2013-09-27T04:43:28.803 に答える