两个班级之间通过表格沟通

时间:2013-07-04 15:58:34

标签: c# .net winforms class

我使用的是Windows表单MainForm,它调用以下内容:

FileSystemLayer FSL = new FileSystemLayer();
DatabaseLayer DBL = new DatabaseLayer();

我想做什么:

(在DatabaseLayer类中)

String SomeString = MainForm.FSL.AnotherString;

问题

  

由于其保护级别

,FileSystemLayer FSL无法访问

我试过

public FileSystemLayer FSL = new FileSystemLayer();
public DatabaseLayer DBL = new DatabaseLayer();

但它给出了结果

  

可访问性不一致:'DatabaseLayer'不易访问   字段'MainForm.DBL'

所以我希望有人能就如何在两个班级之间进行沟通给我一些建议。

3 个答案:

答案 0 :(得分:0)

该消息告诉您,当主窗体的DBL成员字段声明为public时,类型本身(DatabaseLayer)被声明为{{1}以外的其他内容},很可能是publicprivate

因此,您可以通过修改DatabaseLayer类并使其成为internal来解决问题。

也就是说,将功能封装到文件系统层和数据库层的主要目的是放松耦合。但是,如果你直接将一个暴露给另一个,并允许一个人打电话到另一个,而不是你把这个好处扔出窗外。您应该考虑采用其他方法来促进两层之间的沟通。

答案 1 :(得分:0)

似乎DatabaseLayer类被定义为internal,所以如果你想让这个类型的属性可以公开访问,你也应该公开类型(DatabaseLayer)public,或者你可以通过定义使你的属性不那么可见它是内部的。

但是,似乎你正在使用某种分层,这不是实现你所寻找的正确方法。

答案 2 :(得分:0)

在尝试了几个我无法应用的建议解决方案之后,我改变了类调用的层次结构,如下所述。感谢人们花时间帮我解决问题。

enter image description here

(Them Paint skillz)