我正在尝试将一个继承WebRequest的类转换为HttWebRequest(因为我不能直接继承HttpWebRequest)但是我得到了转换无效。知道如何从我的实例中获取HttpWebRequest吗?
这是代码:
static void Main(string[] args)
{
WebRequest wr = new WR("bla");
HttpWebResponse webres = (HttpWebResponse) wr; // this fails
Console.ReadKey();
}
public class WR : WebRequest
{
private string bla;
private Uri url;
public WR(string x)
{
bla = x;
}
public override Uri RequestUri
{
get { return this.url; }
}
}
答案 0 :(得分:0)
遗产根本无法以这种方式运作。 HttpWebRequest是WebRequest的更具体的版本。由于您只从WebRequest继承,因此您的对象无法满足HttpWebRequest。
如果您确实需要来自HttpWebRequest的某些字段,请尝试composition而不是遗产。根据您的需要,您可以创建一些基本上在 WR 字段和函数中拥有 HttpWebRequest 字段的类。
注意:这个答案考虑到你不能像你所说的那样继承HttpWebRequest。我不知道为什么。如果由于某种原因你意识到你可以从HttpWebRequest继承,你应该。
答案 1 :(得分:-1)
你需要写的是......
HttpWebResponse webres = new HttpWebResponse();