我了解软件开发的不同层次,例如表示层,逻辑层等。
所以我有一个这是一个Windows Forms应用程序的RaceTrackSimulator项目。我想将所有类(逻辑)与GUI(表示)分开,我这样做:
但现在的问题是,我不知道如何允许类访问和修改GUI的组件,如文本框和标签。我认为这只是一个简单的命名空间问题,但这没有意义,因为在每个类中它都说:
namespace RaceTrackSimulator.BusinessLogic
如何解决此类问题?
谢谢!
答案 0 :(得分:2)
您刚刚将业务层类分隔在单独的文件夹中,该文件夹实际上并不完全符合单独的层。您应该在一个单独的项目(例如,类库项目)中移动所有这些类,并将该类库的dll用于您的表示层表单应用程序。
您也可以选择将业务层编写为WCF服务并进行部署。反过来,您的客户端/表示层将使用该服务然后访问业务层;对于所有不同的客户(UI或其他),您不必专门发送dll,这是一种良好的原因。
在您的特定情况下,问题可能是名称空间不同,在这种情况下请确保您正在导入正确的命名空间。
答案 1 :(得分:0)
如果不查看实际代码,可能会有一些事情。与表单相比,名称空间与3个类不同,因为它们位于不同的文件夹中。
还要确保将组件可见性级别设置为" Public"在窗体设计器的属性选项卡中。一旦它们公开,您应该能够在您创建的3个类中的任何一个中访问它们。
答案 2 :(得分:0)
你放了一个
using RaceTrackSimulator.BusinessLogic;
在您引用对象的文件的顶部?
答案 3 :(得分:0)
您的代码在命名空间方面所处的位置无关紧要。你做得很好。您需要做的就是提供一种从业务逻辑类访问组件的方法。根据您的要求,有很多方法可以做到这一点。您可以在表单中提供post(对象状态)方法,并实例化您的逻辑类,传递对表单对象的引用。然后,您的业务逻辑可以简单地将它喜欢的任何内容发布回表单,然后根据它从逻辑层接收的数据/消息处理UI逻辑的形式。或者,您可以使逻辑层更公开地显示您的组件。或者您提供了一个允许直接访问组件的界面。
此外,您在上面的示例中所谓的业务逻辑并不是真正的逻辑。根据它的外观,它是商业模式类。