【问题标题】:Visual Studio C# - Tier Separation [closed]Visual Studio C# - 层分离
【发布时间】:2016-03-03 15:02:29
【问题描述】:

我正在学习软件开发中的不同层,例如表示层、逻辑层等。

所以我有这个 RaceTrackSimulator 项目,它是一个 Windows 窗体应用程序。我想将所有类(逻辑)与 GUI(演示)分开,我这样做是这样的:

但现在的问题是,我不知道如何允许类访问和修改 GUI 的组件,例如文本框和标签。我认为这只是一个简单的命名空间问题,但这没有意义,因为在每个类中它都说:

namespace RaceTrackSimulator.BusinessLogic

我该如何解决这样的问题?

谢谢!

【问题讨论】:

  • 你的意思是不能从表单访问类,还是不能从类访问表单?
  • 如果你只是将表示逻辑的代码复制到一个单独的文件中,但仍然让它修改 GUI 组件,你还没有将业务逻辑与表示逻辑分离!

标签: c# n-tier-architecture


【解决方案1】:

您刚刚将业务层类分开到单独的文件夹中,实际上完全不符合单独的层。您应该将所有这些类移到一个单独的项目(例如,类库项目)中,并将该类库的 dll 用于您的表示层表单应用程序。

您也可以选择将业务层编写为 WCF 服务并进行部署。反过来,您的客户端/表示层将使用该服务,然后访问业务层;这是一种很好的原因,对于所有不同的客户端(UI 或其他),您不必专门发送 dll。

在您的具体情况下,问题可能是命名空间不同,在这种情况下,请确保您正在导入正确的命名空间。

【讨论】:

    【解决方案2】:

    在不查看实际代码的情况下可能会发生一些事情。与您的 Form 相比,命名空间与 3 个类不同,因为它们位于不同的文件夹中。

    还要确保在表单设计器的属性选项卡中将组件可见性级别设置为“公共”。一旦它们公开,您应该可以在您创建的 3 个类中的任何一个中访问它们。

    【讨论】:

      【解决方案3】:

      你放了吗

      using RaceTrackSimulator.BusinessLogic;
      

      在您引用对象的文件顶部?

      【讨论】:

        【解决方案4】:

        就命名空间而言,您的代码所在的位置无关紧要。你做得很好。您需要做的就是提供一种从业务逻辑类访问组件的方法。根据您的要求,有多种方法可以做到这一点。您可以在表单中提供一个 post(Object state) 方法,并实例化您的逻辑类,传递对表单对象的引用。然后,您的业务逻辑可以简单地将它喜欢的任何内容发布回表单,然后取决于表单如何根据从逻辑层接收的数据/消息处理 UI 逻辑。或者你可以让你的组件对逻辑层更公开可见。或者您提供一个允许直接访问组件的接口。

        此外,您在上面的示例中所称的业务逻辑并不是真正的逻辑。从外观上看,它是业务模型类。

        【讨论】:

          猜你喜欢
          • 2017-10-19
          • 1970-01-01
          • 2011-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多