如何将属性从一个HttpWebRequest复制到另一个?
我目前正在编写一个Lib来使用HttpWebRequest类和属性。在调用某些方法后,我需要重建类的HttpWebRequest属性,但不是从头开始。如何将属性从一个HttpWebRequest复制到另一个?
这是我想要完成的任务:从
-
备份性能的现有的HttpWebRequest
System.Reflection.PropertyInfo []属性= m_HttpWebRequest.GetType().GetProperties();
-
重新实例化属性,创建一个新的WebRequest
m_HttpWebRequest =(HttpWebRequest的)WebRequest.Create(requestUrl);
将复制的属性添加到新实例。我还无法做到这一点。
有关如何实施第三步的任何想法? 目前我可以用得到的每个属性的名称:
properties[index].Name
但我不能参考价值。
这应该粗略地让你有:
foreach(var prop in m_HttpWebRequest.GetType().GetProperties())
{
if(!(prop.CanWrite && prop.CanRead))
continue;
var val = prop.GetValue(m_HttpWebRequest, BindingFlags.GetProperty, null, null, null);
if (val == null)
continue;
prop.SetValue(m_HttpWebRequest2, val, BindingFlags.SetProperty, null, null, null);
}
你试过:
var value = propertyInfo.GetValue(m_HttpWebRequest, null);
您的情况:
foreach (PropertyInfo propertyInfo in m_HttpWebRequest.GetType().GetProperties())
{
if (propertyInfo.GetValue(m_HttpWebRequest, null) != null) propertyInfo.SetValue(m_HttpWebRequest2,propertyInfo.GetValue(m_HttpWebRequest, null), null);
}
了解更多关于它:
'properties [0] .GetValue(null,null)'抛出一个异常'System.Reflection.TargetException'\t object {System.Reflection.TargetException} – 2012-01-09 14:08:46
对不起,我给你最通用的描述I在那个时刻可以想到。我将它定制为您的具体情况,但现在@ M.Babcock有更好的答案:) – carlossless 2012-01-09 14:37:12
这看起来像我想要的,现在让我试试看。 如果有效,我会尽快通知您。 谢谢! – 2012-01-09 14:10:14
该代码未经测试并从内存中写入,但我已经写了几十次,所以我相当确信它会按原样运行。 – 2012-01-09 14:12:28
“找不到属性集方法”。 Forth属性引发此错误。名称是:“HaveResponse” – 2012-01-09 14:13:37