我正在使用以下方法來輸出具有其屬性的對象。它適用於大多數對象,但在傳遞HttpRequest對象時拋出。反射 - 爲什麼我無法訪問此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.
它說, HTTPChannelBinding屬性的Property訪問器不支持此平臺上的操作。
這是爲什麼?
你有沒有考慮過使用'obj.GetType()。GetProperties()'?然後你有一個不同的方法調用,'property.GetValue(obj,null)',這可能有一些根本的區別。 – Tejs