Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Global.asax中创建静态对象并从控制器调用它_C#_Asp.net Mvc_Asp.net Mvc 4_Singleton - Fatal编程技术网

C# 在Global.asax中创建静态对象并从控制器调用它

C# 在Global.asax中创建静态对象并从控制器调用它,c#,asp.net-mvc,asp.net-mvc-4,singleton,C#,Asp.net Mvc,Asp.net Mvc 4,Singleton,我在Global.asax中创建了一个类,如下所示: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.Reg

我在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?

}
受保护的无效应用程序\u Start()
{
RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
//我应该把下面描述的清单放在这里吗?
}
公共密封级安全
{
private static readonly Lazy Lazy=new Lazy(()=>new security());
公共静态安全实例{get{return lazy.Value;}}
私人保安()
{
}
//或者我应该把下面描述的列表放在这里?
}
问题:

  • 我用它来创建一个静态列表,与所有用户共享。这就是我需要的:
    公共静态列表userPermissionSet{get;set;}
    ,但我不确定该行放在哪里,以便在应用程序启动时立即创建它
  • 一旦它被创建,我需要获得这个列表来添加一个用户登录时创建的对象,但是我不知道如何从控制器调用这个类,因为它在Global.asax中

  • 我怀疑我是否需要使用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; }
    }
    

    我将创建一个包含权限集的单例类,并在整个应用程序中使用它

    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; }
    }
    

    在哪个特定的源文件中编写类型并不重要。这里有很多建议,如果我深入研究其中一些,你已经打破了一个(但那没关系)。正如我所说。您在
    Global.asax
    中声明该类的事实并不意味着您的控制器无法访问它。如果使用或程序集引用缺少,则会执行此操作。所以全局可访问的singleton
    security.Instance
    很好。别担心单身汉。这并不是让你的应用程序运行缓慢的原因(其他因素会)。“下面描述的列表”是什么?注意:描述的不是word@SpaceBison@GuilhermeLongo是的,这是谷歌描述的=DIt与您在哪个特定的源文件中编写类型无关。这里有很多建议,如果我深入研究其中一些,你已经打破了一个(但那没关系)。正如我所说。您在
    Global.asax
    中声明该类的事实并不意味着您的控制器无法访问它。如果使用或程序集引用缺少,则会执行此操作。所以全局可访问的singleton
    security.Instance
    很好。别担心单身汉。这并不是让你的应用程序运行缓慢的原因(其他因素会)。“下面描述的列表”是什么?注意:描述的不是word@SpaceBison@GuilhermeLongo是的,这是谷歌描述的=你敢肯定这是对的吗?PermissionManager在公共列表UserPermissionSet{get;private set;}中抱怨“需要一个get或set访问器”——请检查:否,我只是这样写的,没有编译。有几个语法错误。现在是时候了你确定这是对的吗?PermissionManager在公共列表UserPermissionSet{get;private set;}中抱怨“需要一个get或set访问器”——请检查:否,我只是这样写的,没有编译。有几个语法错误。现在它是复杂的