Исключение счетчика параметров: GetValue из System.String - PullRequest
1 голос
/ 04 мая 2011

Я работаю над классом, который генерирует дерево свойств, но у меня проблема с некоторыми массивами и примитивными типами данных, которые содержат массивы.

В примере строка имеет свойства Chars и Length. Как я могу получить доступ к Chars с помощью GetValue без использования Length?Основная причина, по которой я не хочу использовать свойство Length, заключается в том, что я не знаю, существует ли какой-либо класс, который содержит свойство Length или нет

public class Util
{
    public static IDictionary<String,Object> PrintProperties(Type type, Object obj)
    {
        PropertyInfo[] properties = type.GetProperties();
        IDictionary<String, Object> propertyDict = new Dictionary<String,Object>();


        if (properties.Length > 1)
        {
            for (int i = 0; i < properties.Length; i++)
            {
                Console.WriteLine(properties[i].Name);

               if (properties[i].PropertyType.GetProperties().Length > 1)
                {
                    Object value = obj.GetType().GetProperty(properties[i].Name).GetValue(obj, null);
                    if (value == null)
                    {
                        propertyDict[properties[i].Name] = null;
                    }
                    else
                    {
                        propertyDict[properties[i].Name] = Util.PrintProperties(properties[i].PropertyType, obj.GetType().GetProperty(properties[i].Name).GetValue(obj, null));
                    }

                }
                else
                {

                    try
                    {
                        // MY PROBLEM
                        Console.WriteLine("\t" + properties[i].GetValue(obj, null));
                        propertyDict[properties[i].Name] = properties[i].GetValue(obj, null);

                    }
                    catch (TargetParameterCountException e)
                    { 
                        // Array



                    }
                    catch (Exception e)
                    {

                    }
                }



            }
        }

        return propertyDict;
    }


}

1 Ответ

1 голос
/ 04 мая 2011

Вы уверены, что GetValue будет уверенным в списке? Тогда и там должен быть лег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...