У меня есть интерфейс: ISearch<T>
и у меня есть класс, который реализует этот интерфейс: FileSearch : ISearch<FileSearchResult>
Как вернуть реализацию интерфейса с интерфейсом в качестве возвращаемого типа?
У меня есть класс FileSearchArgs : SearchArgs
который имеет метод, чтобы вернуть объект поиска:
public override ISearch<SearchResult> getSearchObject()
{
return ((ISearch<SearchResult>)new FileSearch());
}
Это преодолено из :
public virtual ISearch<SearchResult> getSearchObject() { return null; }
код будет строить только тогда, когда я обеспечил приведение к (ISearch), но он бросает исключение во время выполнения с не может бросить ошибку. Кроме того, предыдущая итерация не применяется дженерики к интерфейсу, и, таким образом, метод подписи getSearchObject()
следующим образом:
public override ISearch getSearchObject() { return new FileSearch();}
Я знаю одно решение может быть вернуть базовый класс «Поиск» вместо реализации интерфейса, но я бы предпочел не делать этого и понять, почему я не могу следовать шаблону, который я ранее имел.
Любая помощь, будет принята с благодарностью. Я пытаюсь значительно упростить то, что происходит, поэтому, если какие-либо разъяснения необходимы, пожалуйста, дайте мне знать!
Заранее спасибо.
Каковы отношения (если есть) между 'SearchResult' и' SearchResultSummary'? – Jacob
@Jacob - Извините, сократил имена и явно пропустил вытащить одно «резюме». Я исправил его в сообщении. – Brett
Это лучше. Я предполагаю, что 'FileSearchResult' также происходит из' SearchResult'? – Jacob