【发布时间】:2011-01-25 21:57:54
【问题描述】:
我有一个接口: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 - 抱歉,正在缩短名称,显然错过了取出我已在帖子中修复的“摘要”
-
这样更好。我假设
FileSearchResult也派生自SearchResult?
标签: c# generics inheritance interface