2009-06-21 54 views
2

我正在研究一個Web窗體應用程序,該應用程序有意將其移植到MVC的vNext +1版本。但目前它是一個.NET 3.5 SP1 Web窗體應用程序。如何在Web窗體應用程序中使用System.Web.Abstractions?

我希望有自己的方面它提供標準的HttpContext /的HttpRequest/HttpResponse對象的/ etc對象之上的一些助手。另外,我想要從上下文中解耦出HttpContext類。

因爲有打算去MVC我認爲這是一個好主意,使我們的自定義上下文與System.Web.Abstractions程序集中發運的HttpContextBase(和關聯的類)一起工作。

我不想設計一個解決方案,該解決方案目前解決了一些問題,但需要重新編寫以實現MVC中的可測試性(並且在MCV中只是沒用),但到目前爲止,真的看起來很有用。

問題是我找不到任何有關如何實現此目的的好例子,如何擴展HttpContextWrapperHttpContextBase,以便您可以保持關注點的分離。

回答

0

您不應該需要重寫HttpContextWrapper或HttpContextBase才能實現此目的,而是讓您的自定義上下文與HttpContextBase對象一起工作,這樣您就能夠獨立測試自定義上下文。

public class MyContext 
{ 

    // helper methods work with this context 
    HttpContextBase _ctx; 

    public MyContext(HttpContextBase context) 
    { 
     _ctx = context; 
    } 


} 

而且當你創建在實際應用中自定義上下文只是初始化使用

new MyContext(new HttpContextWrapper(HttpContext.Current)); 
0

爲HttpContext編寫一些擴展方法是不夠的嗎?我在當前的應用程序中完成了這個工作,它運行良好。我想這取決於你希望自定義HttpContext類的複雜程度,以及它是否打算表示與標準HttpContext所代表的內容完全不同的東西。儘管如此,我無法真正想到這種情況。也許你可以詳細闡述一下你的自定義HttpContext的外觀?

+0

這與其說是實際方面,我想改變(雖然有一些附加屬性),大頭正在添加的是請求和響應,我想要不同的對象(包裝對象)。它也沒有與擴展方法的關注分離 – 2009-06-21 19:01:46

相關問題