C# 我们可以用c从windows窗体调用接口方法吗?
假设我有一个实现搜索功能的界面,我有一个windows窗体,单击按钮应该能够调用搜索方法。可能吗?任何帮助都将不胜感激C# 我们可以用c从windows窗体调用接口方法吗?,c#,interface,windows-forms-designer,C#,Interface,Windows Forms Designer,假设我有一个实现搜索功能的界面,我有一个windows窗体,单击按钮应该能够调用搜索方法。可能吗?任何帮助都将不胜感激 谢谢是的,在任何基于OOP的语言中,只使用对象的定义是一种常见的做法,以便以后可以更改实现细节 假设您有以下接口 public interface ISearchProvider { ISearchResult Search(ISearchRequest request); } 如果现在在windows窗体中实现一个通过构造函数参数设置的属性,则可以创建一个窗体,该
谢谢是的,在任何基于OOP的语言中,只使用对象的定义是一种常见的做法,以便以后可以更改实现细节 假设您有以下接口
public interface ISearchProvider {
ISearchResult Search(ISearchRequest request);
}
如果现在在windows窗体中实现一个通过构造函数参数设置的属性,则可以创建一个窗体,该窗体可以为特定存储库实现多个版本的ISearchProvider,例如:Sql、FileSystem、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;
}
}
var form = new SearchForm(new MockedSearchProvider());
form.Show();
然后我们可以用以下方式调用SearchForm
public class MockedSearchProvider : ISearchProvider {
public ISearchResult Search(ISearchRequest request) {
ISearchResult result = null;
// implement searching here
return result;
}
}
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;
}
你的界面实现了搜索功能?请发布您的代码并重新组织您的问题…现在它非常混乱