大規模な 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 から取得されます。
機能を拡張するためにラッパーを使用するのは良いポリシーですか、それともテスト用のモックを作成するためだけのものですか?