c# 使用不在表单中的代码来减少重复代码?

标签 c# visual-studio-2010 class dll

刚刚完成我的一个项目,即将开始另一个项目。这在我的大学里从来没有教过,所以我什至不知道它是否存在。比方说你有代码......

MessageBox.Show("Hi");

现在我知道我可以在 Form1 中调用它了。 我也知道我可以用另一种形式调用它,前提是它在公共(public)类/void 中或其他什么?

我的问题是,是否有一个库系统,我可以在其中添加 30-40 个代码片段,每个代码片段都可以完成它们自己的工作。所以当我想更新 sql 或运行计算时,我只是从库中调用代码文件?

抱歉,如果我遗漏了一些明显的谷歌让我发疯的东西,我知道我想问什么,只是不知道怎么问!希望你明白我的问题.. 谢谢,问候..

最佳答案

当然。在 Visual Studio 的解决方案中,您可以添加一个类库项目,并用您想要的所有可重用代码填充它。然后解决方案中的任何项目都可以通过向该项目添加项目引用来引用它。

请注意,在这样的事情上很容易过火。以你的例子为例:

MessageBox.Show("Hi");

MessageBox 类与用户界面紧密耦合。所以它属于用户界面对象。 (在这种情况下是表单。)这是因为如果您尝试在您的类库中使用它,那么您需要将用户界面库添加到该类库,使其与特定的用户界面实现更紧密地耦合。这使得类库的可移植性和可重用性大大降低,因为它只能由采用相同用户界面技术的项目使用。 (例如,Web 项目不能使用。)

因此,您需要考虑封装到其自己的可重用代码中的每个通用实用程序。它属于 UI、业务对象、数据访问等吗?如果它与特定的外围技术(用户界面技术、数据访问技术等)紧密耦合,那么它可能属于那里。

实现此目的的一种方法是拥有多个“公共(public)实用程序”库。使用人为的命名方案,更大的企业域解决方案可能有这样的项目:

  • Domain.BusinessLogic(类库,所有内容都引用)
  • Application.Forms.AdminPanel(表单申请)
  • Application.Forms.OperationsPanel(表单应用程序)
  • Application.Forms.Common(类库,被其他表单应用引用)
  • Application.Web.PublicWebsite(网络应用程序)
  • Application.Web.Common(类库,被其他网络应用引用)
  • Infrastructure.DataAccess.SQLServer(类库,依赖注入(inject)域)
  • Infrastructure.Vendor.SomeService(类库,依赖注入(inject)域)
  • 等等

因此,您有一个核心业务逻辑项目,其中包含对您工作的整个业务领域通用的任何内容。它应该没有依赖关系。 (不依赖用户界面、数据库、框架等)然后你有各种技术的应用程序,其中有混合类库,它们具有应用程序耦合的通用功能。最后,您拥有域的其他外围,即后端依赖项。这些可能是您的数据访问层、与第 3 方系统和服务的集成等。

由于任何给定的功能都被抽象成一个通用实用程序以减少重复并增加重用,因此请注意保持代码耦合度较低,这样“通用实用程序”就不会与“不常见的依赖项”紧密绑定(bind)。在行业中,代码重用的紧耦合度越来越高。 (参见 Single Responsibility Principle。)因此请运用良好的判断力来避免这种情况。

如果同一段代码服务于不止一种职责,那么多次编写同一段代码(“相同”仅通过击键,不一定出于概念目的)本质上没有错,并且这些职责不应混合。

关于c# 使用不在表单中的代码来减少重复代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203286/

相关文章:

c# - 从多个线程持续增加数字列表的最快方法是什么?

c# - 按日期列出项目数

c# - 在具有一对多关系的实体中同时插入数据

class - 程序集中的结构或类

c++ - 在类中创建函数的问题

PHP调用类方法/函数

java - 如何实现具有恒定追加和随机访问时间的不可变集合?

c# - 使 Visual Studio 调试器以正确的应用程序为目标

c++ - 构建 C++ 项目以包含所有 msvc dll

.net - 我可以在 VS2008 中使用 .NET Framework 4.0 吗?