c# - 如何拥有一个单例类并在整个应用程序中使用它 c#
问题描述
我有一个反序列化 JSON 文件的类。JSON 是 styleconfig.json
{
"Style1": {
"Font": "Arial",
"width": "25px",
"className": "Grid-side"
} ,
"Style2": {
"Font": "Arial",
"width": "25px",
"className": "Grid-side"
}
}
我有一个A类:
var jss = new JavaScriptSerializer();
string json = new StreamReader(context.Request.InputStream).ReadToEnd();
Dictionary<string, string> sData = jss.Deserialize<Dictionary<string, string>>(json);
所以我每次都需要在我的应用程序中调用这个classA 例如有两个页面...Page1和page2两个样式变量都在json上所以每次我需要调用classA来反序列化
- page1 调用 classA 进行反序列化
- page2调用classA反序列化
所以这可能会影响性能。最终,整个应用程序的 JSON 文件是相同的
所以我的要求是只在我登录应用程序时运行一次 classA 并在整个应用程序中创建反序列化 JSON 对象。我需要一些帮助
解决方案
您可以使用静态类执行此操作,并使用 Lazy<> 确保它只加载一次:
public static class A
{
private static Lazy<Dictionary<string, string>> _data = new Lazy<Dictionary<string, string>>(() => GetData());
public static Dictionary<string, string> Data => _data.Value;
private static Dictionary<string, string> GetData()
{
var jss = new JavaScriptSerializer();
string json = new StreamReader(context.Request.InputStream).ReadToEnd();
return jss.Deserialize<Dictionary<string, string>>(json);
}
}
推荐阅读
- javascript - ngu-carousel :: ExpressionChangedAfterItHasBeenCheckedError: 表达式在检查后已更改
- c# - NHAPI C# 3.5 解析 orm_001 2.3
- c# - 结构到类并返回隐式转换
- mysql - Nodejs上的MySql:使用池中的连接并运行查询不会释放连接
- java - 如何过滤列表视图?
- android - 创建具有透明背景的 Ionic 3 应用程序
- reactjs - React Loadable 在动态加载的组件中请求新的 css
- python - 将HTML表格的每一行读入python列表
- javascript - 如果字符串变量等于特殊字符“✔”的条件
- python - 根据特定键的值从python字典中提取键值对