2011-12-17 109 views
0

我有以下代碼:我可以在C#中擴展請求方法嗎?

public static string FormatHostAndUrl(this HttpSessionStateBase session) 
    { 
     var a = session["CurrentHost"]; 
     var b = session["CurrentUrl"]; 
     var c = string.Format("http://{0}{1}", session["CurrentHost"], new Uri((string)session["currentUrl"]).PathAndQuery); 
     return string.Format("http://{0}{1}", session["CurrentHost"], new Uri((string)session["currentUrl"]).PathAndQuery); 
    } 

我用這個來得到確切的URL包括端口。使用我使用的天藍色系統,這似乎是給出正確URL的唯一代碼組合。

我得到的會話變量

Session["CurrentUrl"] = Request.Url.ToString(); 
Session["CurrentHost"] = Request.Headers["Host"]; 

我想什麼做的是延長了申請對象,所以我可以做這樣的事情:

Session["TheRealURLI Need"] = Request.RealURL(); 

是否有可能有這樣做擴展方法?某些方法可以執行FormatHostAndUrl方法的功能?

+0

我不確定我是否理解這個問題。 `請求'不是一種方法。它是[HttpRequest]類型的對象(http://msdn.microsoft.com/en-us/library/system.web.httprequest.aspx) – Amy 2011-12-17 03:36:40

回答

4
public static class Extensions 
{ 
    public static string GetRealUrl(this HttpRequest request) 
    { 
     return "will the real url please stand up?"; 
    } 
} 

編輯:這裏的關鍵是要擴展,甚至密封的。 如何獲得HttpRequest對象無關緊要,無論是通過Request屬性還是通過任何其他方式。你擴展類型。該物業將效仿。

相關問題