繁体   English   中英

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

[英]How do I Copy Properties From one HttpWebRequest to Another?

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

这就是我想要完成的事情:

  1. 从现有的HttpWebRequest备份属性

    System.Reflection.PropertyInfo [] properties = m_HttpWebRequest.GetType()。GetProperties();

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

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

  3. 将复制的属性添加到新实例。 这是我无法做到的。

有关如何实施第三步的任何想法? 目前我可以使用以下方式获取每个Property的名称:

properties[index].Name

但我不能参考这个价值。

你有没有尝试过:

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

这大致应该让你到达那里:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM