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