WPF アプリケーションを作成していますが、継承で問題が発生しました。GUIクラスとデータクラスをリンクするというクラスがあります
。
GUI またはデータ部分は将来変更される可能性があるため、コードは開いたままにしておく必要があります。そのため、実際の GUI/データ クラスへのインターフェイスまたは抽象クラス参照を使用します。 DataHandlerDataHandler
たとえば、SelectionFrameと を使用する必要がSetSelection()あり、両方のメソッドを持つインターフェイスGetSelection()を作成しました。ISelectionGUIそしてそれをSelectionFrame実装します。
public interface ISelectionGUI
{
void SetSelection(HashSet<String> fields);
void GetSelection(HashSet<String> fields);
}
public partial class SelectionFrame : Window, ISelectionGUI
{
[...]
}
DataHandlerクラスでは、次のようになります。
ISelectionGUI sF = new SelectionFrame();
しかし、これを行っている間、次のWindowようにキャストする場合を除いて、メソッドを使用できません。
((Window)sF).Show();
次の開発者に拡張を強制するものは何もないため、これは最善の解決策ではないようですWindow。また、必要なメソッドを
拡張して備えた抽象クラスを使用しようとしました。そのクラスを拡張し、xamlを変更しました(これに続いて): WindowSelectionFrame
<base:ISelectionGUI x:Class="WFChecker.SelectionFrame"
[...]
xmlns:base="clr-namespace:WFChecker"
[...]
</base:ISelectionGUI>
しかし、VisualStudio ではデザイナーで抽象クラスを使用できないため、うまくいきませんでした。Window私の質問は、メソッドにアクセスしながら、クラスを実装したり、抽象クラスを拡張したりするフレームを作成するにはどうすればよいですか?