Visual Studio C# - 层分离

时间:2016-03-03 15:02:30

标签: c# n-tier-architecture

我了解软件开发的不同层次,例如表示层,逻辑层等。

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

The Project Solution in Visual Studio

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

namespace RaceTrackSimulator.BusinessLogic

如何解决此类问题?

谢谢!

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

如果不查看实际代码,可能会有一些事情。与表单相比,名称空间与3个类不同,因为它们位于不同的文件夹中。

还要确保将组件可见性级别设置为" Public"在窗体设计器的属性选项卡中。一旦它们公开,您应该能够在您创建的3个类中的任何一个中访问它们。

答案 2 :(得分:0)

你放了一个

using RaceTrackSimulator.BusinessLogic;

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

答案 3 :(得分:0)

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

此外,您在上面的示例中所谓的业务逻辑并不是真正的逻辑。根据它的外观,它是商业模式类。