HttpWebRequest потомок - PullRequest
       9

HttpWebRequest потомок

0 голосов
/ 17 декабря 2011

я пытаюсь использовать вместо обычного HttpWebRequest

// get a login page
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.facebook.com/");   

мой настроенный класс FacebookHttpWebRequest, который выглядит так:

// get a login page
FacebookHttpWebRequest req = (FacebookHttpWebRequest)WebRequest.Create("http://www.facebook.com/");   

Здесь настраивается реализация класса

class FacebookHttpWebRequest : HttpWebRequest
    {
        public FacebookHttpWebRequest() : base()
        {
            this.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1";
            this.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";            
        }
    }

но возникла ошибка Ошибка

'System.Net.HttpWebRequest' не содержит конструктор, который принимает 0 аргументов

И это действительно требует двух аргументов: serializationInfo и streamingContext.

Так как я могу сделать своего собственного HttpWebRequest потомка? Я знаю, что могу использовать специальный метод, который настроит обычный HttpWebRequest, но будет более элегантно иметь специальный класс для этого.

1 Ответ

2 голосов
/ 17 декабря 2011

Вам не нужно наследование для этого.Просто оберните логин создания на своей собственной фабрике:

static class FacebookWebRequestFactory {
  public static HttpWebRequest Create() {
    var req = (HttpWebRequest)WebRequest.Create("http://www.facebook.com/");
    req.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1";
    req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";            
    return req;
  }
}

Используйте его так:

var req = FacebookWebRequestFactory.Create();
...