c# - 多个类和表单的样式/架构健全性检查

标签 c# winforms class architecture

到目前为止,我一直用来自学编码的 c# 项目是一个包含大量函数和大量“全局”静态变量的巨大形式。

阅读此处、完成一些教程等之后,我现在正尝试完成重构它以正确使用类和封装的过程。

我的类(class):

  • Program.cs - 基本上除了初始化 Form1 什么都不做。
  • Form1.cs = 生成并修改所有 UI。调用其他类中的公共(public)函数,并有一些其他类可以调用的公共(public)函数来更新它。
  • UiStrings.cs = 包含所有错误消息、对话框、说明等。
  • Options.cs = 跟踪一些设置,构建和更新安装文件的路径,根据不断变化的 UI 执行代码。
  • Updater.cs = 跟踪当前版本、下载 Assets 、将它们放在正确的位置并调整选项。
  • Installer.cs = 根据当前选项处理安装/卸载/备份所有 Assets 。

最初,我在 Form1 中为每个其他类创建了一个实例。这使 Form1 能够访问 UiStringsOptions 中的函数和属性。然而,这些类不能访问彼此的一部分,大概是因为它们没有被实例化。

这促使我将所有自定义类(如 UiStringsOptions)设为静态(因为我不需要其中任何一个的多个实例)。这也意味着我必须将每个类中的每个函数和属性也设为静态。

这是一个真正知道自己在做什么的人会想到的合理解决方案吗?

到目前为止,它似乎在我的测试中有效,但我最初完全没有类(class)的尝试也工作得很好,直到我发现它有多么错误。

最佳答案

如果您打开项目属性(在解决方案资源管理器中右键单击项目,右键单击,选择属性),您将找到资源选项卡,这是您的 UiStrings 的用途,以及设置选项卡,这是您的选项的用途。我建议将它们用作标准功能。这也消除了设计您自己的要素类的需要。

除此之外,您可以将它们做成静态的,并且您不必创建一个类的副本来访问静态成员。语法是 ClassName.Method() 或 ClassName.Property 而不是 var instance = new ClassName();实例.方法();

关于c# - 多个类和表单的样式/架构健全性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292600/

相关文章:

c# - Nuget: 'Google.Apis' 已具有为 'Google.Apis.Core' 定义的依赖项

language-agnostic - 程序员应该在一个文件中放入多少个类?

c# - 数据库 'master' 中的 CREATE DATABASE 权限被拒绝。 SQL Server 2012

使用 get/set 的 C# 线程安全

c# - asp.net在网站中添加自定义控件

c# - 在资源文件中存储 html 标签的最佳实践/技巧

c# - 锁定一个winforms控件

c# - 将值从 C++ 应用程序传递到 C# 应用程序

c++ - 同一类中的多个 Operator() 重载

python - 如何用抽象模型定义外键关系?