0
私はこのコードを持っています。問題は、クラスDatabase
からクラスMainWindow
にアクセスする必要があることです。私はDatabase
でMainWindow
から継承しようとしましたが、それは動作しませんでした。私はちょうど両方のクラスで互いにクラスの参照を持つ必要があります。 アドバイスありがとうございます!データベースのコンストラクタでのデータベースへのメインウィンドウの参照を渡すと、これを行うにはいくつかの方法があります2つのクラス間の参照
public partial class MainWindow : Window
{
Database db = new Database(@"database.txt");
public MainWindow()
{
InitializeComponent();
}
public void setLabel(string s)
{
Vystup.Content = s;
}
}
class Database
{
//constructor and other methods
public void doSomething()
{
//Here I want to set Label in MainWindow, something like
//MainWindow.setLabel("hello");
}
}
MainWindowをデータベースクラス – Marusyk
のコンストラクタパラメータとして渡すようにしてください**これはしません**これはSoS(分離の懸念)とカプセル化(*クラスをプライベートな状態をプライベートに保つ*)を破ります。データベースクラスは作業を行い、結果を返す必要があります。 MainWindowクラスはそれ自身のラベルを更新する必要があります。クラス間でプライベート状態を共有しないでください。 – Igor
データベースに、そのコンストラクタにMainWindow型のオブジェクトを持ち、そのオブジェクトをプライベートフィールドに渡します。あなたが持っている他の引数で 'this'を渡してください。その後、データベースでアクセスできます。実際のMainWindowに縛られないように、インタフェースされたオブジェクトを使用する方がよいでしょう。 @Igorはこの場合正しいですが、これは純粋にそれを行う方法です - あなたがここにいるべきではありません... –