3 つの ASP.NET ページがあります。それぞれに独自のGetSearchResultメソッドがあり、異なる検索結果を生成して GridView に入力します。各ページは、ヘルパー クラスから共有ヘルパー メソッドを呼び出します。
このヘルパー クラスで、ヘルパー メソッドを呼び出したページに属するGetSearchResultメソッドを実行します。
これは可能ですか?もしそうなら、どうすればいいですか?
メソッド GetSearchResult を所有するクラスのインスタンスをパラメーターとしてヘルパー メソッドに渡します。これにより、ヘルパー メソッドが呼び出し元のメソッドにアクセスできるようになります。これを行うには、インターフェースを実装する必要があります。
public interface ISearchable
{
void GetSearchResult();
}
public class MyPage : Page, ISearchable
{
public void GetSearchResult() {
HelperClass.HelperMethod(this); // Pass in
}
}
public static class HelperClass
{
public static void HelperMethod(ISearchable page) {
page.GetSearchResult();
}
}
ページへの参照を引数としてヘルパー メソッドに渡し、そのページで GetSearchResult を再度呼び出すことができます。(理想的には、ページはメソッド GetSearchResult を含む ISearchPage などのインターフェイスを実装する必要があります)。
[編集: 上記を入力しているときに、David Anderson が回答でコードを提供しました]
または、ヘルパー メソッド内から、ヘルパー オブジェクトにステータス フラグを設定します (またはステータスの列挙を使用します)。あなたのページでは、そのフラグまたは列挙値を読み取ることができ、ステータスが GetSearchResult を再度呼び出す必要があることを示している場合は、再度呼び出します。