2

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

MessageBox.Show("Hi");

现在我知道我可以在 Form1 中调用它。我也知道我可以用另一种形式调用它,前提是它在公共类/无效或什么的?

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

对不起,如果我错过了一些明显的谷歌让我发疯的东西,我知道我想问什么,只是不知道如何问它!希望你能理解我的问题.. 谢谢,问候..

4

3 回答 3

7

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

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

MessageBox.Show("Hi");

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

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

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

  • Domain.BusinessLogic(类库,一切都引用)
  • Application.Forms.AdminPanel(表单应用程序)
  • Application.Forms.OperationsPanel(表单应用程序)
  • Application.Forms.Common(类库,其他 Forms 应用程序引用)
  • Application.Web.PublicWebsite(网络应用程序)
  • Application.Web.Common(类库,其他 Web 应用程序引用)
  • Infrastructure.DataAccess.SQLServer(类库,依赖注入到域中)
  • Infrastructure.Vendor.SomeService(类库,依赖注入到域中)
  • 等等

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

由于任何给定的功能都被抽象为通用实用程序以减少重复并增加重用,因此请注意保持代码耦合较低,以免“通用实用程序”与“不常见的依赖项”紧密绑定。在行业中,与代码重用的紧密耦合经常会增加。(请参阅单一职责原则。)因此,请运用良好的判断力来避免这种情况。

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

于 2013-04-24T22:44:16.370 回答
4

听起来您想使用静态方法。按您的例程进行分组,并将它们放在静态类中,例如

internal static class Utility
{
    public static void Method1(int whatever)
    {
        // do stuff
    }

    public static void Method2(string another)
    {
        // do other stuff
    }

}

然后你可以这样称呼他们:

Utility.Method1(7);
Utility.Method2("thingy");
于 2013-04-24T22:29:47.373 回答
1

简单的解决方案是创建一个新项目并选择“类库”选项。这将创建一个编译成 DLL(动态链接库)的类。你想在任何地方使用你添加的这个公共代码都可以添加对程序集的引用,然后在你使用它的特定文件中,你必须为它添加一个 using 语句。

如果您需要上交多个项目,您可以将所有项目放在一个解决方案下。如果您右键单击解决方案并选择下拉菜单的属性选项,它将在左侧导航栏中打开一个带有“配置属性”选项的新窗口。选择它,然后您可以指定构建依赖项。因此,如果您的项目 A 和 B 使用项目 C(类库)中的方法,那么您可以将其设置为构建依赖项,这意味着每当您构建项目 A、B 或整个解决方案时,它将首先构建项目 C。

这通常是企业软件的结构方式;一些 dll 或 exe 是应用程序级代码,然后是许多其他项目,它们构建了通常由多个项目共享的通用代码。所有这些通常都放在一个解决方案的保护伞下。

如果你走这条路,我可以更新更多细节(比如调试时默认运行哪个 exe)。在大学里你可能不会学到任何东西,但你很可能会在你开始第一份工作时就看到。

于 2013-04-24T22:47:38.287 回答