IDはメソッドにIDを渡すだけで、そのエンティティが存在するかどうかをtrueまたはfalseで返すだけの妥当性チェックを実行するために使用します。私は私のリポジトリごとにこの実装をしたくないので、以下に示すように別のインターフェイスIValidityCheck<T> where T: DbSet<T>
を作成しました。ジェネリックdbsetに依存性注入を使用するにはどうすればよいですか?<T>
public interface IValidityCheck<T> where T: DbSet<T>
{
bool IsValid(Guid id, T entitySet);
}
私の.netコアアプリケーションでは、このために依存関係を追加しようとしています。私は何かが好きです。
services.AddTransient<IValidityCheck<DbSet<School>>, ValidityCheck<DbSet<School>>>();
は、しかし、私は
タイプのようなエラーが出ます 「Microsoft.EntityFrameworkCore.DbSet」 型ジェネリック型でパラメータ「T」または方法 「IValidityCheck」として使用することはできません。 「Microsoft.EntityFrameworkCore.DbSet」 への暗黙の参照変換は、私はそれが
where T: class
に制約を変更すると、それが容易になります知っているが、私はへの制約をしたい
「> Microsoft.EntityFrameworkCore.DbSet」がありませんあなたが1つの以上のパラメータを必要とする場合があり
1):DbSet
TはどのようにDbSetになりますか?私は別の汎用変数が必要だと思います –
あなたの定義は無限回帰ループのようです。 'public interface IValidityCheckここで、T:DbSet 'と 'services.AddTransient 、School>、ValidityCheck 、School >>();' –