Это приведение будет работать, только если:
- Объект, переданный в ваш метод
Search
, относится к типу, который реализует IGenericSearchProcessor<T>
и, IGenericSearchProcessor<T>
внедряет ISearchProvider
.Ваш код показывает, что IGenericSearchProcessor<T>
реализует ISearchCriteria
, а не ISearchProvider
.
Если вы просто собираетесь привести параметр к IGenericSearchProcessor<T>
, то я бы предложил просто сделать этот типпараметр:
public Task<ISearchResponse> Search(IGenericSearchProcessor<T> provider, T criteria) {
...
}
Просто сделав это, вы, вероятно, покажете, где ваш другой код может работать неправильно.