这段代码我做错了什么?
我有一个接口,以及一个继承此接口的类。
然后我有另一个继承自该类的类。
当我尝试将此类作为参数传递给接受List<that interface>
的方法时,我收到以下错误:
'Scorer(ref System.Collections.Generic.List&lt; ISearchResult&gt;)'的最佳重载方法匹配有一些无效的参数
参数1:无法从'ref System.Collections.Generic.List'转换为'ref System.Collections.Generic.List&lt; ISearchResult&GT;'
这是我的界面,类和方法定义,以及编码的问题行:
public interface ISearchResult
{
double SearchScore { get; set; }
string SearchIndex { get; set; }
}
public class SearchResult : ISearchResult
{
public double SearchScore { get; set; }
public virtual string SearchIndex { get; set; }
}
public class MyData : SearchResult
{
public int ID { get; set; }
public string Title { get; set; }
public override string SearchIndex { get; set; }
}
public void Scorer(ref List<ISearchResult> results)
{
...
...
List<MyData> myResults = q.ToList();
search.Scorer(ref myResults); //line with the errors
...
答案 0 :(得分:1)
List<T>
类型不是协变的,因此您需要选择其他类型,例如IEnumerable<T>
或IReadOnlyCollection<T>
。