1

大規模な MVC プロジェクトを開発しており、HttpSessionStateWrapper (および HttpRequestWrapper、HttpResponseWrapper など) を使用して、このオブジェクトを実行する拡張機能を追加するつもりです。セッションメッセージ、追加のコレクション、応答を含むhtmlメタデータを追加します-そのようなもので、コントローラーから管理でき、必要に応じてビューでアクセスできます。

私は小さなプロジェクトでそれを行いましたが、あちこちのキャストの問題を除いて、一般的にうまく機能しましたが、コントローラーまたは最終的にはビューの外部でラッパーを使用しないことで回避できます。すべてのコントローラーは、次のようなコードを持つカスタム コントローラーになります。

public class Controller : System.Web.Mvc.Controller
{
    public new CustomHttpResponse Response
    {
        get
        {
            return (CustomHttpResponse)HttpContext.Response;
        }
    }

    public new CustomHttpRequestRequest
    {
        get
        {
            return (CustomHttpRequestRequest)HttpContext.Request;
        }
    }
    //etc...

}

ContextWrapper は、カスタム MvcHandler で作成されます。レスポンス、リクエスト、およびセッション ラッパーが作成され、 ContextWrapper から取得されます。

機能を拡張するためにラッパーを使用するのは良いポリシーですか、それともテスト用のモックを作成するためだけのものですか?

4

0 に答える 0