在复杂的表单中,我有一个名为Readonly
的属性,用于确定所有内容是否可编辑。到目前为止,我通过构造函数将此属性传递给此表单中的每个子自定义控件,在其他地方,我访问表单本身以获取值。
但这很快变得太复杂了 我正在考虑在表单中将此属性设置为静态,因为它知道应用程序中只有该表单的一个实例。
在这种情况下,将此属性用作静态是否可以?或者这是一种不好的做法,即使只有一个表格实例。
答案 0 :(得分:4)
即使您使用静态字段拥有单个表单实例也不会使其安全。您可能有多个导致问题的线程。更不用说对您的应用程序进行单元测试的难度。我个人尽量避免使用静态字段。
答案 1 :(得分:3)
简单地问问自己:这是否与表单或表单的类型有关。假设,如果有多个表格 - 它们是否只是同时读取/不同时?或者是每个表格?
然后:你有答案。我怀疑它应该是实例(非静态)。
答案 2 :(得分:1)
这是另一种解决方案:
IReadOnlyToggable
的界面,该界面具有IsReadOnly
属性,并让表单实现它。代码:
public bool IsFormReadOnly
{
get
{
var form = ParentForm as IReadOnlyToggable;
return form != null && form.IsReadOnly;
}
}