0

おそらくこれは非常に基本的な質問です。そうである場合はご容赦ください---私はC#の初心者です。

受信者にコマンドを送信するためのWPFGUIがあります。コマンドはASCIIテキストです。ここで、GUIに加えて通信方法を使用するコンソールアプリケーションがあるため、通信部分を別のプロジェクトに分割しました。通信DLLは、通常のソケットで非同期メソッドを使用します。

ここで問題となるのは、循環依存関係になることです。GUIはメッセージを送信するために通信ルーチンを呼び出す必要があり、ルーチンは応答を表示するためにGUIを呼び出す必要があります。通信が継承して依存関係を回避するインターフェースを作成できることは理解していますが、これが最善の方法ですか?それとも、これは私のデザインの欠陥ですか?基本的に、GUIを基盤となる通信レイヤーから切り離したかったのです。

4

1 に答える 1

2

ライブラリ(dll)はGUIを直接更新しないでください。イベントを発生させる必要があります。理想的には、イベントもより高いレベルの抽象化になります(「パケットが正常に受信されました」ではなく、「メッセージが正常に受信されました」。ただし、ライブラリの低レベルの機能をどれだけ公開するかは、実際にはあなた次第です)。

GUI(またはコンソールアプリまたは完全に異なるライブラリ)がイベントをサブスクライブし、イベントデータにアクセスできるようになりました。GUIは、上位層がライブラリについて知っているので、ライブラリはGUI(またはコンソールアプリケーション)について知っているべきではありません。

于 2010-08-02T10:13:06.670 に答える