2011-05-25 15 views
0

私はHttpRequestResponseのC#プログラムを以下のように書いています。HttpWebRequest and Response

public string Methods(int id) 
{ 
    HttpWebRequest Request = (HttpWebRequest) WebRequest.Create(@"http://172.17.18.16:8082/item/detail/90"); 

    Request.Method = "Get"; 
    WebResponse Response = Request.GetResponse(); 

    IHttpRequest request = (IHttpRequest)Request; 
    IHttpResponse response = (IHttpResponse)Response; 

    SetupRequest(request, response, session); 
    //Request.Method = Method.Get; 
    string m = request.Method; 
    TemplateManager mg=new TemplateManager(); 
    ItemController it = new ItemController(mg); 
    it.Detail(); 
    return m; 
} 

ここIHttpRequestIHttpResponseが既に作成されているインターフェイスです。 HttpWebRequest Requestをインターフェイスに割り当てて、残りの機能がそれ自体起こるようにします。鋳造ラインにエラーが発生しました

「System.Net.HttpWebRequest」タイプのオブジェクトを「HttpServer.IHttpRequest」に入力することができません。

私は解決策を見つけるために助けてください

おかげ

+1

ない考えあなたは**残りの機能は**自体をどうすべきで何を意味するかによります。 'IHttpRequest'と' IHttpResponse'はすでに作成されていますか? – V4Vendetta

+0

HttpRequestクラスでは、すべてのコードはすでに何らかのタスクを実行するように書かれています.i新しいウィンドウuiを作成してurl.soを渡すこのURLはihttprequestに渡され、彼らが書いたタスクを実行します – user703526

+1

正しく理解すれば、あなたがSystem.Net.HttpWebRequestを実装するのが難しいインターフェイスです。しかし、おそらくあなたはインターフェイスを投稿することができますか?あなたの解決策はおそらく、あなたのインターフェースを実装し、受信したHttpWebResponseにリダイレクトする合成を使用するアダプタを作成することでしょう。 – faester

答えて

1

は、これらの行は、仕事に行くことはありません:

IHttpRequest request = (IHttpRequest)Request; 
IHttpResponse response = (IHttpResponse)Response; 

それらのどちらもインタフェースIHttpRequestまたはIHttpResponseを実装しているため。 inbuiltクラスに独自のインターフェイスを実装させるには、それを拡張する必要があります(新しいクラスを派生させる必要があります)。なぜこの2つのクラスでこれをしようとしているのか正確にはわかりませんが、インターフェイスの実装方法を変更したい場合はインターフェイスとして使用します。つまり、HttpWebRequestの代替品を書きたい場合や、依存性注入コンテナを使用していた場合(そしてこれでもインターフェイスが動作する必要はありません)。

そのDOCOのオンラインのために、ここでチェック:HttpWebRequest & HttpWebResponse