2013-03-01 55 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