WinForms 中的全局变量
Global variables in WinForms
好吧,这个主题可能已经死了,但我想把它扔出去看看人们对我的方法有何看法。
我需要创建一个简单的 WinForms 应用程序,它将包含一个表单句柄。我可以将一些变量加入 app.config,因为它们永远不会真正改变。但是,将从登录用户独有的数据库中提取一些变量。我需要保留这些变量,并使这些变量可供应用程序的其余部分使用,以驱动适当的业务逻辑。
根据 Whosebug 上的其他文章,我的计划是将单例模式与 IoC 一起使用。因此,首先根据连接到接口的单例模式实例化一个 class 。然后将实例化的对象传递给 program.cs 中其他方法的构造函数,我将在其中安排我的大部分对象。这应该意味着我可以轻松地测试和模拟这个和其他 classes(我想?)。
我看到有两种基于单例模式创建 class 的方法,一种是 'classic' 方法,但它不是线程安全的。另一个需要稍微多一点的编码,但会是线程安全的。我的 WinForms 项目会非常简单,并且不需要在后台执行多个操作 运行。只是简单的 CRUD 操作从 UI 触发。为方便起见,我想我会使用 classic 单例(非线程安全)方法。也就是说,即使对于最简单的 WinForm 应用程序来说,这是一件坏事吗?
如果您使用的是 .NET 4.0+,只需对您的单例使用 Lazy<T>
class。如果您坚持不关心线程安全(为什么?),get => _value ?? (_value = GetValue())
就足够了。
好吧,这个主题可能已经死了,但我想把它扔出去看看人们对我的方法有何看法。
我需要创建一个简单的 WinForms 应用程序,它将包含一个表单句柄。我可以将一些变量加入 app.config,因为它们永远不会真正改变。但是,将从登录用户独有的数据库中提取一些变量。我需要保留这些变量,并使这些变量可供应用程序的其余部分使用,以驱动适当的业务逻辑。
根据 Whosebug 上的其他文章,我的计划是将单例模式与 IoC 一起使用。因此,首先根据连接到接口的单例模式实例化一个 class 。然后将实例化的对象传递给 program.cs 中其他方法的构造函数,我将在其中安排我的大部分对象。这应该意味着我可以轻松地测试和模拟这个和其他 classes(我想?)。
我看到有两种基于单例模式创建 class 的方法,一种是 'classic' 方法,但它不是线程安全的。另一个需要稍微多一点的编码,但会是线程安全的。我的 WinForms 项目会非常简单,并且不需要在后台执行多个操作 运行。只是简单的 CRUD 操作从 UI 触发。为方便起见,我想我会使用 classic 单例(非线程安全)方法。也就是说,即使对于最简单的 WinForm 应用程序来说,这是一件坏事吗?
如果您使用的是 .NET 4.0+,只需对您的单例使用 Lazy<T>
class。如果您坚持不关心线程安全(为什么?),get => _value ?? (_value = GetValue())
就足够了。