昨天我在暑期实习期间获得了一个项目,要求在Visual Studio 2010中使用XAML和C#来制作我创建的控制台应用程序的WPF版本。不幸的是,直到3天前我都没有任何一种语言的经验,所以虽然这个问题的解决方案可能很简单,但它无法逃脱我,我无法在网上找到任何可用的解决方案
基本上,当我启动这个WPF应用程序时,我想实例化一个在C#中的应用程序内定义的对象。我希望该类的实例在应用程序运行的整个时间内可用。我想知道这是否可以通过为应用程序创建全局资源来实现,但据我所知,只能为XAML资源完成。
任何帮助和想法将不胜感激。如果我写的任何内容太模糊,请告诉我,我会尽力澄清
答案 0 :(得分:2)
资源通常用于XAML类型的东西(样式,转换器实例等)。
这似乎是静态类的一个很好的用例。静态类在第一次使用时被实例化,并且只有一个实例。您还可以使用单例(通常利用静态成员)。
请注意,单身人士可以成为代码气味,但如果您知道自己需要代码气味,请继续进行!资源不是去这里的方式。
快速单身示例:
public class MyGlobalClass
{
private Lazy<MyGlobalClass> _instance = new Lazy<MyGlobalClass>();
public static MyGlobalClass Instance { get { return _instance.Value; } }
//Whatever else, accessed by MyGlobalClass.Instance.<Whatever>
}
答案 1 :(得分:0)
看起来BradleyDotNet有基本答案。此外,您可能希望研究使用IoC容器并让它管理单例实例。所以没有静态,没有实现单例模式,只需让IoC容器处理这个责任。
另外一点需要注意,静态!=线程安全所以如果有多个线程访问你的单例对象,请确保考虑线程安全。