0
我在做這個代碼有什麼問題?將引用傳遞給從繼承自接口的類繼承的類
我有一個接口和一個繼承此接口的類。
然後我有另一個類繼承該類。
當我試圖通過這個類作爲參數的方法接受一個List<that interface>
我得到以下錯誤:
的「射手最佳重載方法匹配(REF System.Collections.Generic.List < ISearchResult>)」具有一些無效參數
參數1:不能從轉換 'REF System.Collections.Generic.List' 到 'REF System.Collections.Generic.List < ISearchResult>'
這裏是我的接口,類和方法的定義,問題線路編碼:
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
...
自從我使用C#以來這已經有一段時間了,所以這可能已經改變了,但我不認爲列表是協變的。你可以讓接口使用'IEnumerable'? –
@EvanTrimboli,謝謝,但只是嘗試IEnumerable和錯誤是一樣的。 – johna
對我運行正常:https://gist.github.com/evantrimboli/b1d61b51e9a2724066cc375471c046c1 –