在启动并从文件加载信息后,如何创建一个可在所有 MVC 和 WEB API 中访问的全局对象
How can I create a global object that is accessible in all the MVC & WEB API after it start and load information from file
我有一个 class,它有一个字典正在从本地 XML 从 App_Data 加载。我应该在哪里添加 class 以使其对我的应用程序中的所有控制器全局可见?我只是认为行为像一个单身人士。如果在 global.asax
中添加一个好的选项
Class 例子
public class OptionsNames
{
private Dictionary<int, string> names;
public OptionsNames()
{
names = new Dictionary<int, string>();
names= LoadOptionsFromXML();
}
public string GetNameById(int id)
{
if (names.ContainsKey(id))
return names[id];
return string.Empty;
}
}
听起来您只想要一个 static
对象:
public static class OptionsNames
{
private static Dictionary<int, string> names;
static OptionsNames()
{
names = new Dictionary<int, string>();
names = LoadOptionsFromXML();
}
public static string GetNameById(int id)
{
if (names.ContainsKey(id))
return names[id];
return string.Empty;
}
// other class members
}
静态 class 位于何处并不重要,可以从任何地方引用它。只需确保它位于直观的 location/namespace.
中
使用代码将直接调用它而无需创建实例:
var name = OptionsNames.GetNameById(someIdValue);
这是一个延迟加载的单例示例
public class OptionsNames
{
private static Dictionary<int, string> names;
private static readonly Lazy<OptionsNames> LazyInstance = new Lazy<OptionsNames>(() => new OptionsNames());
protected OptionsNames()
{
names = new Dictionary<int, string>();
names = LoadOptionsFromXML();
}
public static OptionsNames Instance
{
get { return LazyInstance.Value; }
}
public static string GetNameById(int id)
{
if (names.ContainsKey(id))
return names[id];
return string.Empty;
}
}
而且你不需要在global.asax中做任何事情,只需要这样调用
var name = OptionsNames.Instance.GetNameById(someIdValue);
就是这样。
我有一个 class,它有一个字典正在从本地 XML 从 App_Data 加载。我应该在哪里添加 class 以使其对我的应用程序中的所有控制器全局可见?我只是认为行为像一个单身人士。如果在 global.asax
中添加一个好的选项Class 例子
public class OptionsNames
{
private Dictionary<int, string> names;
public OptionsNames()
{
names = new Dictionary<int, string>();
names= LoadOptionsFromXML();
}
public string GetNameById(int id)
{
if (names.ContainsKey(id))
return names[id];
return string.Empty;
}
}
听起来您只想要一个 static
对象:
public static class OptionsNames
{
private static Dictionary<int, string> names;
static OptionsNames()
{
names = new Dictionary<int, string>();
names = LoadOptionsFromXML();
}
public static string GetNameById(int id)
{
if (names.ContainsKey(id))
return names[id];
return string.Empty;
}
// other class members
}
静态 class 位于何处并不重要,可以从任何地方引用它。只需确保它位于直观的 location/namespace.
中使用代码将直接调用它而无需创建实例:
var name = OptionsNames.GetNameById(someIdValue);
这是一个延迟加载的单例示例
public class OptionsNames
{
private static Dictionary<int, string> names;
private static readonly Lazy<OptionsNames> LazyInstance = new Lazy<OptionsNames>(() => new OptionsNames());
protected OptionsNames()
{
names = new Dictionary<int, string>();
names = LoadOptionsFromXML();
}
public static OptionsNames Instance
{
get { return LazyInstance.Value; }
}
public static string GetNameById(int id)
{
if (names.ContainsKey(id))
return names[id];
return string.Empty;
}
}
而且你不需要在global.asax中做任何事情,只需要这样调用
var name = OptionsNames.Instance.GetNameById(someIdValue);
就是这样。