我有两个名为" xxxManager"的静态类。我在" MainPage"开始时,他们会从内存中获取一些数据,以便在我的应用中显示,特别是进入列表。我创建它们作为静态类,因为我需要在我的应用程序的每个页面中的数据。所以我只是这样做:
xxxManager.GetDataByPageId(2).GetList()
我可以使用它的所有值。
问题在于我不希望它们是静态的,因为我想创建一个抽象类并用来派生我的两个" Managers"。如果我这样做,我将需要创建这些类的构造函数,但每次进入另一个页面时我都不想做new
,因为它会从内存中读取另一个时间数据
如何通过页面将对象放入我的所有应用程序的全局范围?
我想创建一个静态类(只是一个例子):
public static Definitions()
{
xxxManager manager_;
public void Initialize()
{
xxxManager manager_ = new xxxManager();
}
}
这是一个好的解决方案,还是有更好的东西?
答案 0 :(得分:2)
据我所知,你需要实现单例模式。
public class XxxManager
{
private static Lazy<XxxManager> lazyInstance = new Lazy<XxxManager>(() => new XxxManager());
private XxxManager()
{
}
public static XxxManager Instance
{
get
{
return lazyInstance.Instance;
}
}
}
从那里,您可以通过调用XxxManager.Instance
从代码中的任意位置检索您的经理。该类的构造函数设置为private,以确保它永远不会手动实例化。
答案 1 :(得分:1)
我通常在App.xaml.cs中创建一个静态属性
public static ViewModels.ViewModelBase ViewModel { get; set; }
在同一文件中的OnLaunched事件中初始化它。这样,可以在应用中的任何位置使用App.PropertyName
。
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
// other code
ViewModel = new MainViewModel();
// other code
}
对我来说,这适用于ViewModels和NavigationHelpers以及需要在应用程序的任何位置访问的任何其他位。