0
このコードで何が問題になっていますか?インターフェイスから継承するクラスから継承するクラスへの参照を渡す
私はインターフェイスとこのインターフェイスを継承するクラスを持っています。
次に、そのクラスから継承する別のクラスがあります。
私がしようとすると、私は次のエラーを取得List<that interface>
受け取るメソッドへのパラメータとして、このクラスを渡す:
'から' refのSystem.Collections.Generic.List:< ISearchResultは>「)から変換することはできません「スコアラー(REF System.Collections.Generic.Listための最良のオーバーロードされたメソッドの試合をREF System.Collections.Generic.List < ISearchResult> '
引数1は、いくつかの無効な引数を持っています'ここ
は私のインターフェイス、クラスやメソッドの定義され、符号化の問題行:
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 –