Я использую следующий метод для вывода объектов с их свойствами. Он отлично работает с большинством объектов, но выдает ошибку, когда я передаю объект HttpRequest.
public static string ConvertToXML(object obj)
{
if (!obj.GetType().IsPrimitive && obj.GetType() != typeof(String) && obj.GetType() != typeof(Decimal))
{
List<string> properties = new List<string>();
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))
{
string name = descriptor.Name;
object value = descriptor.GetValue(obj);
properties.Add(xmlify(name, value));
}
if (properties.Count == 0)
return obj.ToString();
else
return xmlify(obj, string.Concat(properties));
}
else
return obj.ToString();
}
Выдает ошибку в этой строке:
descriptor.GetValue(obj);
Ошибка (извините, есть только немецкая версия: /):
Der Eigenschaftenaccessor HttpChannelBinding für das System.Web.HttpRequest-Objekt hat folgende Ausnahme verursacht: Die Operation wird auf dieser Plattform nicht unterstützt.
В нем говорится, что метод доступа Property для свойства HTTPChannelBinding не поддерживает операцию на этой платформе.
Это почему?
obj.GetType().GetProperties()
? Затем у вас есть вызов другого методаproperty.GetValue(obj, null)
, который может иметь некоторую основную разницу. - person Tejs   schedule 19.08.2011