-1

MainForm以下を呼び出すWindows フォームを使用しています。

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' よりもアクセスしにくい

ですから、2 つのクラス間で通信する方法について、誰かがアドバイスをくれることを願っています。

4

3 に答える 3

0

そのメッセージはDBL、メイン フォームのメンバー フィールドがpublic型自体として宣言されている間に ( ) が、おそらく、またはDatabaseLayer以外のものとして宣言されていることを示しています。publicprivateinternal

そのため、DatabaseLayer クラスを変更して作成することで問題を解決できますpublic class DatabaseLayer

とはいえ、機能をファイル システム層とデータベース層にそれぞれカプセル化する主な目的は、結合を緩めることです。しかし、一方を他方に直接公開し、一方が他方を呼び出せるようにすると、利益を窓から放り出すようなものになります。2 つのレイヤー間の通信を容易にする別の方法を検討する必要があります。

于 2013-07-04T16:09:02.947 に答える
0

DatabaseLayer クラスは internal として定義されているようですので、その型のプロパティをパブリックにアクセスできるようにしたい場合は、型 (DatabaseLayer) も public を定義するか、internal として定義してプロパティを見えにくくすることができます。 .

しかし、ある種の階層化を使用しているようにも見えるので、探しているものを達成するための正しい方法ではありません。

于 2013-07-04T16:14:34.270 に答える