にT」「typeパラメータとして使用することはできません」IFieds
インタフェースはタイプは、「ジェネリック型またはメソッド
public interface IFields
{
string code { get; set; }
int id { get; set; }
}
私がしようとしているところ私はこの一般的な方法
public IEnumerable<T> GetByID<T>(IEnumerable<T> source, int id) where T : IFields
{
return source.Where(x => x.id == id);
}
を作成しました値を取得するには、これは明らかに以下のコンパイルエラーで
DB.GetByID(Helper.Database.Table<Items>(), 1);
をコンパイルしません。
型「項目は、」ジェネリック タイプ又は方法 「DB.GetByID(System.Collections.Generic.IEnumerable、INT)」タイプのパラメータ「T」として使用することができません。そこに は「アイテム」から「IFields」への暗黙的な参照変換ではありません
どのように修正できますか? 実際、私はラムダ式を "匿名型で"使用したいと考えています。
'Items'は' IFields'を実装していますか? –
@ LasseV.Karlsen実際にいいえ – OrElse
あなたは何が起こると思いますか?あなたは特に 'T'がそのインターフェースを実装しなければならないと言っていますし、そうでないタイプを渡そうとしています。なぜ私はあなたにそのエラーメッセージが表示されるかを簡単な答えを投稿することができますが、これは本当にあなたを助けるつもりはないと思います。なぜ制約を加えたのか、それを実装していない型を渡すときに起こると思われる理由や理由を教えてください。おそらく、「ここで勝利した理由は何ですか? t仕事 "。 –