-1

I am using a Windows Form MainForm which calls the following:

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

What I want to do:

(inside the DatabaseLayer class)

String SomeString = MainForm.FSL.AnotherString;

The problem

The FileSystemLayer FSL is inaccessible due to its protection level

I've tried

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

But it gave the result

Inconsistent accessibility: 'DatabaseLayer' is less accessible than field 'MainForm.DBL'

So I'm hoping someone can give me some advice on how to communicate between the two classes.

4

3 回答 3

0

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

在此处输入图像描述

(他们油漆技能)

于 2013-07-04T17:08:13.523 回答
0

似乎 DatabaseLayer 类被定义为内部的,因此如果您想让该类型的属性可公开访问,您也应该将类型 (DatabaseLayer) 定义为公共的,或者您可以通过将其定义为内部来降低您的属性的可见性.

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

于 2013-07-04T16:14:34.270 回答
0

该消息告诉您,虽然DBL主窗体的成员字段被声明为public类型,但它本身 ( DatabaseLayer) 被声明为不同于public、最有可能privateinternal

所以你可以通过修改DatabaseLayer类并制作它来解决问题public class DatabaseLayer

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

于 2013-07-04T16:09:02.947 回答