我目前正在编写一个Lib来使用HttpWebRequest类和属性。在调用某些方法之后,我将需要重构类的HttpWebRequest属性,但不是从头开始。
这就是我想要完成的事情:
从现有的HttpWebRequest备份属性
System.Reflection.PropertyInfo [] properties = m_HttpWebRequest.GetType()。GetProperties();
重新实例化该属性,创建一个新的WebRequest
m_HttpWebRequest =(HttpWebRequest)WebRequest.Create(requestUrl);
将复制的属性添加到新实例。我无法做到的。
有关如何实施第三步的任何想法? 目前,我可以使用以下方式获取每个Property的名称:
properties[index].Name
但我无法参考该值。
答案 0 :(得分:1)
你试过了吗?
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);
}
了解更多信息:
答案 1 :(得分:1)
这应该可以帮助你:
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);
}