Cómo establecer la referencia a HtmlWeb en HtmlAgilityPack

c# html-agility-pack

Pregunta

Quiero asignar una dinámica (es decir, los cambios de referencia según la URL de la solicitud).

No puedo encontrar una propiedad de Referrer o Headers . Todo lo que puedo ver es PreRequest , a la que puedo agregar un controlador. ¿Hay alguna otra manera de pasar una referencia al manejador sin usar una variable global?

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

Respuesta aceptada

¿Hay alguna otra manera de pasar una referencia al manejador sin usar una variable global?

Puede utilizar variables capturadas . Consulte, por ejemplo, este enlace "Descripción de la captura de variables en C #" o este Cierre y la variable capturada C #

Ahora puedes hacer

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

Algunas notas:

¿Qué son los cierres?

Los cierres son una función que se puede almacenar en una variable, pasar como parámetro y referirse a las variables visibles en el momento en que se definen.

Variable capturada

La variable externa referenciada por el cierre se llama variable capturada



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow