C#で次のコードを書く方法はありますか?C#ジェネリック型を別のクラスに渡す方法
public T GetRandomRecord<T>(DbSet<T> set)
{
return set.OrderBy(r => Guid.NewGuid()).FirstOrDefault();
}
それは私に次のエラーを与える:
Error CS0452 The type 'T' must be a reference type in order to use it as parameter 'TEntity' in the generic type or method 'DbSet'
DbSet
はMicrosoft.EntityFrameworkCore.DbSet
です。
どうすれば修正できますか?
に制約を追加します。そして、なぜそれが必要か? – FrozenHeart
@FrozenHeartこの場合、おそらく 'DbSet'はそれ自身の型パラメータ 'T'に同じ制約を持っているからです。 –
@FrozenHeartええ、私はちょうどチェックし、それは同じ制約があります。 'where TEntity:class' –