Я работаю над классом, который генерирует дерево свойств, но у меня проблема с некоторыми массивами и примитивными типами данных, которые содержат массивы.
В примере строка имеет свойства 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;
}
}