如何在HtmlAgilityPack中將引用者設置為HtmlWeb

c# html-agility-pack

我想分配一個動態(意味著引用者根據請求URL進行更改)。

我無法找到一個ReferrerHeaders財產。我只能看到PreRequest ,我可以添加一個處理程序。有沒有其他方法可以在不使用全局變量的情況下將引用者傳遞給處理程序?

   void SomeMethod()
   {
     ....
      var referrer = "some URL";
      //web.Referrer = referrer;  Ideal way, but not possible
      web.PreRequest += OnPreRequest;
      ....
   }

    bool OnPreRequest(HttpWebRequest req)
    {
        req.Referer = ??; //how to know the referrer address here?
        return false;
    }

一般承認的答案

有沒有其他方法可以在不使用全局變量的情況下將引用者傳遞給處理程序?

您可以使用捕獲的變量 。例如,請參閱此鏈接“了解C#中的變量捕獲”或此閉包和捕獲的變量C#

現在你可以做到

void SomeMethod()
{
    var referrer = "some URL";
    web.PreRequest += (req){
        req.Referer = referrer;
        return false;
    };
}

一些說明:

什麼是封閉?

閉包是可以存儲在變量中的函數,作為參數傳遞並引用定義它們時可見的變量。

捕獲變量

閉包引用的外部變量稱為捕獲變量



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow