到目前为止,我一直用来自学编码的 c# 项目是一个包含大量函数和大量“全局”静态变量的巨大形式。
阅读此处、完成一些教程等之后,我现在正尝试完成重构它以正确使用类和封装的过程。
我的类(class):
Program.cs
- 基本上除了初始化Form1
什么都不做。Form1.cs
= 生成并修改所有 UI。调用其他类中的公共(public)函数,并有一些其他类可以调用的公共(public)函数来更新它。UiStrings.cs
= 包含所有错误消息、对话框、说明等。Options.cs
= 跟踪一些设置,构建和更新安装文件的路径,根据不断变化的 UI 执行代码。Updater.cs
= 跟踪当前版本、下载 Assets 、将它们放在正确的位置并调整选项。Installer.cs
= 根据当前选项处理安装/卸载/备份所有 Assets 。
最初,我在 Form1
中为每个其他类创建了一个实例。这使 Form1
能够访问 UiStrings
或 Options
中的函数和属性。然而,这些类不能访问彼此的一部分,大概是因为它们没有被实例化。
这促使我将所有自定义类(如 UiStrings
和 Options
)设为静态(因为我不需要其中任何一个的多个实例)。这也意味着我必须将每个类中的每个函数和属性也设为静态。
这是一个真正知道自己在做什么的人会想到的合理解决方案吗?
到目前为止,它似乎在我的测试中有效,但我最初完全没有类(class)的尝试也工作得很好,直到我发现它有多么错误。
最佳答案
如果您打开项目属性(在解决方案资源管理器中右键单击项目,右键单击,选择属性),您将找到资源选项卡,这是您的 UiStrings 的用途,以及设置选项卡,这是您的选项的用途。我建议将它们用作标准功能。这也消除了设计您自己的要素类的需要。
除此之外,您可以将它们做成静态的,并且您不必创建一个类的副本来访问静态成员。语法是 ClassName.Method() 或 ClassName.Property 而不是 var instance = new ClassName();实例.方法();
关于c# - 多个类和表单的样式/架构健全性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292600/