-4
假設我有一個實現了search()函數的接口,並且我有一個windows表單,它在button_click上應該能夠調用search()方法。那可能嗎 ?任何幫助,將不勝感激。我們可以從c#中的Windows窗體調用接口方法嗎?
謝謝
假設我有一個實現了search()函數的接口,並且我有一個windows表單,它在button_click上應該能夠調用search()方法。那可能嗎 ?任何幫助,將不勝感激。我們可以從c#中的Windows窗體調用接口方法嗎?
謝謝
是的,這在任何基於面嚮對象語言的普遍做法,以便實現細節可以在以後的時間被更改爲使用對象的唯一定義
比方說,你有以下接口
public interface ISearchProvider {
ISearchResult Search(ISearchRequest request);
}
如果現在執行Windows窗體中的屬性,即獲得通過構造函數的參數設置,你可以創建能夠實現ISearchProvider特定庫的幾個版本的形式(如:SQL,文件系統,CSV,...)
那麼然後就可以實現這樣的
private readonly ISearchProvider _searchProvider;
public SearchForm(ISearchProvider searchProvider) {
_searchProvider = searchProvider;
}
調用類的屬性將有一個具體的實施ISearchProvider的初始化SearchForm。所以,讓我們說我們有一個模擬ISearchProvider,通過以下方式實現
public class MockedSearchProvider : ISearchProvider {
public ISearchResult Search(ISearchRequest request) {
ISearchResult result = null;
// implement searching here
return result;
}
}
然後,我們可以調用SearchForm下列方式
var form = new SearchForm(new MockedSearchProvider());
form.Show();
形式,這取決於按一下按鈕,就可以然後執行搜索,如:
protected void SearchButton_Click(object sender, EventArgs e) {
if (_searchProvider == null) {
// search provider wasn't set
return;
}
var result = _searchProvider.Search(GetSearchRequest());
// handle the result
}
private ISearchRequest GetSearchRequest() {
// return a search request, for this question is currently null
return null;
}
您的界面實現搜索功能?請發佈您的代碼並重新構建您的問題....現在,它非常混亂 – Viru