2013-03-01 54 views
1

我創建了一個類的Global.asax像控制器調用它:創建Global.asax中的靜態對象,從

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 

    WebApiConfig.Register(GlobalConfiguration.Configuration); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
    AuthConfig.RegisterAuth();   

    //SHOULD I PUT THE LIST DESCRIBLED BELOW IN HERE? 
} 

public sealed class security 
{ 
    private static readonly Lazy<security> lazy = new Lazy<security>(() => new security()); 

    public static security Instance { get { return lazy.Value; } } 

    private security() 
    { 
    } 

    //OR SHOULD I PUT THE LIST DESCRIBLED BELOW IN HERE? 

} 

問:

  1. 我使用的創建靜態列表與所有用戶共享。這是我需要的:public static List<permissionTemp> userPermissionSet { get; set; },但我不知道該放哪條線,以便在應用程序啓動後立即創建。
  2. 創建完成後,我需要獲取該列表以添加在用戶登錄時創建的對象,但我不知道如何從控制器調用該類,因爲它在Global中。 asax

我不確定是否需要使用單例模式,因爲每次我需要將該項目添加到列表中時,我將需要獲取此類的實例。我假設是!

+0

不要緊,在代碼中**什麼特別的**你寫的一個類型的源文件。在那裏有很多建議,如果我深入其中一些,你已經打破了一個(但沒問題)。就像我說的。你在'Global.asax'中聲明的類不會讓你的控制器無法訪問它。缺少'使用'或彙編引用是什麼會這樣做。所以......全球可訪問的單身'security.Instance'很好。不要擔心單身。這不會讓你的應用運行緩慢(其他的事情)。 「下面列出的列表」究竟是什麼? – 2013-03-01 15:00:50

+0

n.b.描述不是一個字 – SpaceBison 2013-03-01 15:23:41

+0

@SpaceBison https://www.google.com.br/search?q=Describled&aq=f&oq=Describled&aqs=chrome.0.57j62l3.230&sourceid=chrome&ie=UTF-8 – 2013-03-01 15:24:34

回答

1

我會創建一個包含權限集的Singleton類,並在應用程序中使用它。

public class PermissionManager{ 
    private PermissionManager() { UserPermissionSet = new List<permissionTemp>(); } 
    private PermissionManager _instance; 
    public PermissionManager Instance{ 
     get{ 
      if (_instance==null) _instance=new PermissionManager(); 
      return _instance; 
     } 
    } 
    public List<permissionTemp> UserPermissionSet { get; private set; } 
} 

注意:只是一個簡單的實現......你需要執行一個線程安全的構造

那麼在你使用

PermissionManager.Instance.UserPermissionSet 
+0

你確定這是對的? PermissionManager正在抱怨公共List UserPermissionSet {get;私人設置; } - 檢查:http://pbrd.co/Y3XrIU – 2013-03-01 15:38:14

+0

不,我只是寫在沒有compliling它。有幾個語法錯誤。現在它compliles – 2013-03-01 15:44:44