2010-11-25 16 views
2

この悪い習慣は?ASP.NET MVCセッション

using System.Web.Mvc; 

namespace WebInventaris.Utils.Session 
{ 
    public static class SessionControllerExtensions 
    { 
     public static void SetSessionVar<T>(this Controller controller, string field, T value) 
     { 
      controller.Session[field] = value; 
     } 

     public static T GetSessionVar<T>(this Controller controller, string field) 
     { 
      return (T) controller.Session[field]; 
     } 
    } 
} 

セッションをコントローラから分離しようとしていますが、これらの方法については気にしません。

答えて

5

コントローラから直接セッションを使用することは何も問題ありません(これがコントローラクラスのプロパティとして公開された理由の1つです)。それはおそらく、もう少し面白いです

this.SetSessionVar("foo", "bar"); 

は、あなたの一般的なゲッターであるが、まだそれを:拡張メソッドを呼び出して

Session["foo"] = "bar"; 

:そして、私は一種の交換の利益が表示されませんこのメソッドの内部にキャストしているので、コントローラーアクションでも行われている可能性があるので、型セーフではありません。結論としては、それは悪い習慣であるとは言いませんが、私はそのようなクラスの利点は見当たりません。また、これが拡張メソッドであり、その背後にあることを理解する必要がある他の開発者それは単にセッションを使用するシーンです。

関連する問題