如何将属性从一个HttpWebRequest复制到另一个



我目前正在编写一个Lib来使用HttpWebRequest类和属性。在调用某些方法之后,我将需要重构类的HttpWebRequest属性,但不是从头开始。

这就是我想要完成的:

  1. 从现有的HttpWebRequest 备份属性

    System.Reflection.PropertyInfo[]属性=m_HttpWebRequest.GetType().GetProperties();

  2. 重新实例化属性,创建一个新的WebRequest

    m_HttpWebRequest=(HttpWebRequest)WebRequest.Create(requestUrl);

  3. 将复制的属性添加到新实例中。我还不能做到。

对如何实施第三步有什么想法吗?目前,我可以通过使用获得每个物业的名称

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);
}

阅读更多信息:

http://msdn.microsoft.com/en-us/library/b05d59ty.aspx

相关内容

  • 没有找到相关文章

最新更新